Шрифт:
Такая методика работает во всех стандартных контейнерах и потому считается предпочтительным способом удаления элементов, определяемых итератором
Вероятно, вы уже поняли: говорить о том, что функция
Совет 29. Рассмотрите возможность использования istreambuf_iterator при посимвольном вводе
Предположим, вы хотите скопировать текстовый файл в объект
Но вскоре выясняется, что приведенный синтаксис не копирует в строку пропуски (
Чтобы сохранить пропуски, входящие в файл, достаточно включить режим чтения пропусков сбросом флага
Теперь все символы
Кроме того, может выясниться, что копирование происходит не так быстро, как вам хотелось бы. Функции
Более эффективное решение основано на использовании неприметного итератора
Перейти на использование
На этот раз сбрасывать флаг skpws не нужно, итераторы
По сравнению с
Если вы планируете читать из потока по одному символу, не нуждаетесь в средствах форматирования ввода и следите за эффективностью выполняемых операций, три лишних символа на итератор — не такая уж дорогая цена за заметный рост быстродействия. При неформатном посимвольном вводе всегда рассматривайте возможность применения
Раз уж речь зашла о буферизованных итераторах, следует упомянуть и об использовании