Russian Qt Forum

Программирование => С/C++ => Тема начата: alexcpp от Декабрь 18, 2010, 19:11



Название: переделать код для использования QDirIterator
Отправлено: alexcpp от Декабрь 18, 2010, 19:11
Изучаю КюТи.
Пытаюсь переделать этот код, в КюТи лайк стиль:
Код
C++ (Qt)
#include <algorithm>
#include <boost/filesystem.hpp>
 
int main() {
boost::filesystem::recursive_directory_iterator beg("C:\\");
boost::filesystem::recursive_directory_iterator end;
std::vector<boost::filesystem::path> paths;
std::copy_if(beg, end, std::back_inserter(paths),
!boost::bind(boost::filesystem::is_directory<boost::filesystem::path>, _1)
);
}
 
 
Но не получается :'(
Что-то с QDirIterator не так.. Его невозможно чтоли использовать со стандартными алгоритамами?
А как можно переделать этот код с КюТи лайк стиле но без явного использования циклов?


Название: Re: переделать код для использования QDirIterator
Отправлено: alexcpp от Декабрь 18, 2010, 19:16
Еще ненашел в QtAlgorithms copy_if().
И еще bind()
Или плохо искал?


Название: Re: переделать код для использования QDirIterator
Отправлено: alexcpp от Декабрь 19, 2010, 00:56
АЛЁ ФОРУМ ПОХОЖЕ МЕРТВЫЙ ПО ДЕТЕ ПОСТОВ!!!! ПОНЯТНО!!


Название: Re: переделать код для использования QDirIterator
Отправлено: Пантер от Декабрь 20, 2010, 10:37
Что-то не вижу у тебя в коде QDirIterator. И вообще, непонятно чего ты хочешь.


Название: Re: переделать код для использования QDirIterator
Отправлено: alexcpp от Декабрь 20, 2010, 21:40
Цитировать
Что-то не вижу у тебя в коде QDirIterator.
ПОтомучто его невозможно использовать с copy_if()!! А В КюТи нет ни copy_if() ни bind() ни back_inserter()`ов!!! Т.Е. этот код невохможно переписать с использовнием КюТИ!

Цитировать
И вообще, непонятно чего ты хочешь.
НАПисал ЖЕ руским языком!
Цитировать
Его невозможно чтоли использовать со стандартными алгоритамами?
А как можно переделать этот код с КюТи лайк стиле но без явного использования циклов?
Хоть руский у меня хромает думаю смысл понятен! Мой родной язык не руский! извините!


Название: Re: переделать код для использования QDirIterator
Отправлено: Пантер от Декабрь 21, 2010, 08:32
Все элементарно. Ты слишком жирный тролль. Решение одно - юзай буст, Кьют тебе не нужен (он только для мышковозов).


Название: Re: переделать код для использования QDirIterator
Отправлено: alexcpp от Декабрь 23, 2010, 06:17
Цитировать
Ты слишком жирный тролль.
Это почему? Потому чтовы не знаете как переделать код в КюТи лайк стиле?

Цитировать
Кьют тебе не нужен (он только для мышковозов)
Согласен но я думал на нем можно не только окошки делать


Название: Re: переделать код для использования QDirIterator
Отправлено: crackedmind от Декабрь 23, 2010, 10:09
Цитировать
Ты слишком жирный тролль.
Это почему? Потому чтовы не знаете как переделать код в КюТи лайк стиле?
Написал бы что тебе надо, а не кусок кода с мерзким бустом и стлом.

Цитировать
Кьют тебе не нужен (он только для мышковозов)
Согласен но я думал на нем можно не только окошки делать
Похоже надо в таких местах показывать табличку "Сарказм"...


Название: Re: переделать код для использования QDirIterator
Отправлено: alexcpp от Декабрь 24, 2010, 01:29
Цитировать
а не кусок кода с мерзким бустом и стлом
МНене нужен код использвший STL или boost я его могу анписать лучшевас насколько японял. Я попросил помочь мне понять как его переписать в КюТи лайк стиле.

Почему на этот форуме все злые??


Название: Re: переделать код для использования QDirIterator
Отправлено: pastor от Декабрь 24, 2010, 01:43
Напиши что тебе нужно получить в итоге. С бустом тут многие просто не знакомы.


Название: Re: переделать код для использования QDirIterator
Отправлено: brankovic от Декабрь 24, 2010, 01:50
1. Кьют не любит шаблоны, так что забудь про copy_if/bind. Это первое, что людей раздражает. Я сначала тоже хотел copy_if, но потом открыл для себя циклы. В них меньше буков, они гибче и быстрее компилятся. Попробуй и ты циклы, вот увидишь, тебе понравится!

2. Желание переписать в кьют-стайле тоже странное, ты же программист! А не стилист кодов. Прочитай доку про кудиритератор и напиши сам, без стайла, просто напиши. И выложи, скажи, что-то длинновато и коряво, может поможете поправить.

3. У некоторых может сомнение зародиться, что мол ты обижаешь итератор, да и хвастаешься, что буст знаешь. Но мы-то с тобой понимаем, что буст "узнать" нельзя, он безначален и -конечен. Нам смешно. Но не все миряне тебя понимают. Вот почитай внимательно, что они пишут: "Кьют тебе не нужен (он только для мышковозов)", горько звучат эти слова. А ты их подначиваешь! Нехорошо! Они куда дальше от нирваны чем ты, надо быть чутким и снисходительным.

Аминь брат.


Название: Re: переделать код для использования QDirIterator
Отправлено: merke от Декабрь 24, 2010, 10:27
Кури QDirIterator


Название: Re: переделать код для использования QDirIterator
Отправлено: twp от Декабрь 24, 2010, 12:11
1. Кьют не любит шаблоны
Некоторые компиляторы не любят шаблоны  ;)


Название: Re: переделать код для использования QDirIterator
Отправлено: spectre71 от Декабрь 25, 2010, 03:10
1. Кьют не любит шаблоны
Некоторые компиляторы не любят шаблоны  ;)

Некоторые компиляторы не любят C++. :)


Название: Re: переделать код для использования QDirIterator
Отправлено: spectre71 от Декабрь 25, 2010, 03:22
Цитировать
а не кусок кода с мерзким бустом и стлом
МНене нужен код использвший STL или boost я его могу анписать лучшевас насколько японял. Я попросил помочь мне понять как его переписать в КюТи лайк стиле.

Почему на этот форуме все злые??

Не пиши злобно, не будем злые!

Qt стиль? А что это и с чем его едят?
Лично для меня Qt нужен не как универсальная библиотека, а как библиотека позволяющая мультиплатформенно решать интерфейсные задачи и им сопутствующие, собственно для этого Qt и создавалась.
Остальное пишем сами, ручками. Нужен STL - пользуем, он стандартный. Нужен boost - дважды подумаем, если действительно нужен - пользуем.


Название: Re: переделать код для использования QDirIterator
Отправлено: alexcpp от Декабрь 26, 2010, 11:55
Много написали мне нужно много времени чтобы ответить на руском. Отвечу на не все коментарий.

Цитировать
потом открыл для себя циклы.
Циклы ненужно открывать их нужно закрывать. Если вы пишите такое значит Вы не понимаете для чего создался STL. Еще некоторые стандарты кодирования с++ запрещают использование циклов.
Цитировать
Желание переписать в кьют-стайле тоже странное, ты же программист! А не стилист кодов
Просто мне стало непонятно как можно написать тот код используя QDirIterator не использовать циклы. Я еще не понял как это сделать. Мне кажется невозможно.
Цитировать
У некоторых может сомнение зародиться, что мол ты обижаешь итератор, да и хвастаешься, что буст знаешь.
Нет я не делал такого. Просто руский язык сложный и я неверно неправильно .. (слово забыл)
Цитировать
Вот почитай внимательно, что они пишут: "Кьют тебе не нужен (он только для мышковозов)", горько звучат эти слова. А ты их подначиваешь! Нехорошо!
Я непонимаю.
Цитировать
Не пиши злобно, не будем злые!
Извните я неспецально.
Цитировать
Лично для меня Qt нужен не как универсальная библиотека, а как библиотека позволяющая мультиплатформенно решать интерфейсные задачи
Тоесть вы не пишите на нем алгоритмы?


Название: Re: переделать код для использования QDirIterator
Отправлено: brankovic от Декабрь 26, 2010, 14:40
Цитировать
потом открыл для себя циклы.
Циклы ненужно открывать их нужно закрывать. Если вы пишите такое значит Вы не понимаете для чего создался STL.

Может и не понимаю. Но я написал много кода на чистом STL, несколько лет им пользовался постоянно. Он мне очень нравится, более логичной библиотеки не встречал.

Но, боюсь, про циклы это вы не понимаете. Цель STL точно _не_ в отказе от циклов. Циклы гибче. Иногда они хуже читаемы, иногда лучше, зависит от контекста и того, кто пишет. Пример отказа от циклов -- язык haskell -- очень сложен в изучении.

Еще некоторые стандарты кодирования с++ запрещают использование циклов.

'Некоторые' стандарты вообще предписывают носить ритуальную одежду и петь хором :)

Просто мне стало непонятно как можно написать тот код используя QDirIterator не использовать циклы.

Никак, но и незачем. Тебя наверное ввело в заблуждении, что он _называется_ итератор. Это ещё не значит, что он итератор STL.

С++ это смешанный язык. По сути Qt основан на наследовании, STL на шаблонах. Эти составляющие пришли из разных языков c разной философией. _Невозможно_ красиво их отобразить друг на друга. И не нужно. Ну если очень хочется, возьми boost::iterator_facade, напиши обёртку QDirIterator. Но учти, обычный цикл будет
1) короче
2) проще
3) быстрее компилироваться
4) легче читаться теми, кто знаком с QDirIterator (а если напишешь my_q_iterator то с ним никто не знаком)
5) выдавать понятные сообщения об ошибках компиляции
6) его будет легче отлаживать (вставить дебажную печать, останов в дебаггере и т.п.)

Цитировать
У некоторых может сомнение зародиться, что мол ты обижаешь итератор, да и хвастаешься, что буст знаешь.
Нет я не делал такого.

Почему такое впечатление возникает: ты берёшь за данность, что всё должно быть в STL-стиле. Твой вопрос даже не подразумевает, что может быть как-то ещё. Поэтому похоже больше на желание поспорить, чем желание что-то узнать. Ещё твой стиль изложения немного агрессивный, что ли.. (может потому что русский не родной язык?)

Цитировать
Вот почитай внимательно, что они пишут: "Кьют тебе не нужен (он только для мышковозов)", горько звучат эти слова. А ты их подначиваешь! Нехорошо!
Я непонимаю.

Тебе намекают, что твой тон агрессивный и максималистский, также что сообщение троллинг. Можно списать на несвободное владение русским, в принципе, но есть нюанс. Агрессивны сообщения может только по форме (здесь владение языком), но максималистские они по сути.

Цитировать
Лично для меня Qt нужен не как универсальная библиотека, а как библиотека позволяющая мультиплатформенно решать интерфейсные задачи
Тоесть вы не пишите на нем алгоритмы?

Кьют и STL это не Коран и Библия, их можно совмещать. Не надо изучение кьют превращать в крестовый поход по лозунгом всё-в-кьют-стиле. Считай их инструментами: какой смысл копать молотком, или забивать гвозди лопатой?