watashiwa_daredeska писал(а): ↑21.11.2007 11:15
iterator сущ.
выч. итератор (устройство или программа организации циклов); периодизатор; программа организации циклов
Расскажите, как InputIterator организует цикл в std::sort.
Морфологию слов иногда полезно учитывать, а словарем стоит пользоваться с умом. Это между нами.
То, что вы привели - это не значение слова, а узкоспециальная
трактовка слова, его толкование, выполненное неизвестным мне специалистом. Расскажите пожалуйста, в каком ЯВУ итераторы являются "программой организации циклов"?
Возможно, вы откроете мне глаза на истину, но во всех мне известных ЯП циклы создавались конструкциями циклов, за исключением гениального смоллток, где они реализуются через рекурсивную посылку сообщения специализированному объекту. И ни в одном не припомню, чтобы упоминались итераторы как "программа оргазации циклов". Поэтому для меня цена приведенного вами толкования - соответствующая. За чужую (не)компетентность я не отвечаю - вопросы к автору того словаря плиз. Ничего общего с итераторами в Си++ его толкование не имеет. Да и с остальными ЯП тоже не понятно как связано.
А значение слова, с учетом морфологии и общего использования, я приводил выше. Как ни странно, но СИ++ оно не противоречит.
sergio писал(а): ↑20.11.2007 21:01
Никакими "сортировками, перестановками и прочей фигней" итераторы никогда не занимались. Это ваша ошибка два.
Они, в целом, расчитаны на это. Без этого невозможно было бы реализовать std::sort, std::remove, ...
Алгоритмы стандартной библиотеки используют итераторы. Но сами итераторы ничего не сортируют. Все четко. В введениях к СТЛ обычно объясняют именно то, что итераторы обеспечивают компактную и эффективную абстракцию для доступа алгоритмов к элементам множеств. Поэтому итераторы и не наделены собственной высокоуровневой логикой в общем случае, и не должны без необходимости плодиться в вариациях - чтобы не плодить копии алгоритмов под чуть-чуть разные типы. Плюс возможность использовать указатели в качестве итераторов для максимума эффективности. А в плюсах эффективность все же в первых рядах, иначе давно бы их забросили.
sergio писал(а): ↑20.11.2007 21:01
Итератор не может представлять последовательность, что ясно следует из его названия. И никогда ее не представлял (в СИ++). Это ваша ошибка три.
Может. Из названия следует, что итератор -- это программа (объект, функция, еще какая фигня) для организации цикла, в частности, по последовательности. Возможно, по виртуальной последовательности. Логичное следствие --
один итератор организует
один цикл. А не два итератора, которые могут к тому же оказаться от разных последовательностей.
Эти рассуждение только следствие из найденного вами определения. И рассуждаете вы так при этом, как будто для вас программа, объект, функция и "еще какая фигня" - одно и то же. Что, правда одно и то же??

Вы уж определитесь тогда. А то программа - это обычно самостоятельная единица на уровне операционной системы, все-таки... Так чего, у нас что-то типа /bin/iterator есть?
Я их там давно нашел. Довольно ограниченные возможности, надо сказать. Особенно, если задача хорошо ложится на идею потоков объектов и "фильтров", что-то вроде шелловского: command | grep pattern | sort | uniq.
Вы бы рассказали, под какую ситуацию вам чего не хватает, почему там плюсовые недоитераторы плохи, и как вы это предлагает решать с "правильными итераторами". Так-то чего говорить - из пустого в порожнее, религиозные убеждения и ничего более.
Ну-ка, ну-ка, что там за суть у вещей?
Итератор - поинтер на элемент некой произвольно упорядоченной последовательности, обеспечивает косвенный доступ элементу, может быть перемещен на другой элемент или на мнимый элемент за концом. Для N числа элементов как-либо упорядоченных в последовательность, может быть одновременно задано и недеструктивно использовано (N + 1)! различных (под-)последовательностей, заданных соответствующим количеством пар итераторов одного типа. Замечу лишний раз, что никаких перестановок и сортировок итераторы не выполняют. Они только обеспечивают возможность ссылаться на элементы...
Расскажите пожалуйста, как подобная гибкость достигается якобы-правильными итераторами?
Я этого не говорил. Однако, во-первых, это рекомендуется во всех C++-книгах как истинный C++-стиль, во-вторых, товарищи выше предлагали на полную катушку пользоваться "великолепной" STL везде, где можно, в предпочтение C-стилю.
Уже ответили до меня. И на счет "всех сиплюс книг" не уверен, и свою голову никто не отменял, и циклы фор являются вполне истинной конструкцией си плюс, а не сугубо "Си-стилем"... Так что... чего бороться с мельницами?
deninok писал(а): ↑21.11.2007 13:35
По-моему, обсуждение уходит в оффтоп относительно начатой темы. Может, это интересную дискуссию перенесут в отдельную тему?
А оно туда ушло с первых же постов.
