необходим в целом?
как по мне, странный вопрос, особенно в беседе по С++
Вокруг него целая стандартная библиотека построена большей частью. Вам этого недостаточно?
То есть, использовать итераторы везде, где можно? На такой ответ только такой вопрос возникает.
Извиняюсь, если так, но что странного?
Итераторы необходимы для написания циклов foreach и обхода коллекций. Код на плюсах и других языках очень часто прибегает к операциям обхода коллекций, однако они не являются строго необходимыми в повседневном использовании. Функциональная парадигма пропагандирует выполнение операций над всей коллекцией разом в противовес обходу элементов. Однако следует понимать что для выполнения этих операций на бэкенде всё равно будут использованы механизмы типа итераторов.
Да, везде, где они подходят. У вас особого-то выбора нет при взаимодействии со стандартной библиотекой. Собственно, итераторы не имеют альтернатив. Да, у нас теперь ещё и std::ranges есть, но оно тоже поверх концепции итераторов создано
ну это для меня слышаться, как будто бы в беседе поваров ресторанов спросили Что скажете о специях, как о предмете на кухне? Часто используется? Без них как бы все и начинают готовить, но с ними вкуснее, смысл в этом.
То есть, уместны даже потоковое итераторы? Просто я редко видел, что они где то используются, ну, точнее, реже чем файловые потоки.
Речь про тривиальное считывание и запись в файл
А, даже так, понял)
Понял, спасибо)
Ужасный паттерн. Из за этой глупости в том числе а плюсах файл с диска по нормальному считать не получается Паттерн while(get(it)){°°°} намного лучше
Потоковые итераторы - это отдельная песня. По сути потоковые итераторы являются адапторами, позволяющими применять алгоритмы предназначенные для коллекции к данным полученным из потоков напрямую. Однако коллекции потоки - это всё-таки разные применение подобного подхода весьма ограничено отсюда и редкость применения подобных итераторов.
Если они позволяют достичь необходимую цель. Они действительно редки, но это лучше ручных циклов, например, здесь: std::ifstream in("file.txt"); std::vector<char> contents( std::istreambuf_iterator{in}, std::istreambuf_iterator<char>{});
Все таки лучше так, понял, спасибо)
Мне копайлот недавно такое написал. Я целую минуту не мог сообразить, как это работает.
Обсуждают сегодня