Код: Выделить всё
#include
#include
#include
int main() {
auto fin = std::ifstream("tmp.txt");
auto pos = std::istream_iterator(fin);
auto last = std::istream_iterator{};
auto strs = std::vector{};
for (; pos != last; ++pos) {
// Always COPY rather than MOVE the string here!
strs.emplace_back(std::move(*pos));
}
}
Это STD :: aStream_iteRATU Следует: < /p>
const t & operator*() const; < /p>
< /blockquote>
Что означает, что мы не можем перемещать кэшированные объекты, даже если итератор является одноэтатным! /> t & operator*() const; < /p>
< /blockquote>
Тогда мы могли бы < /p>
использовать std :: istream_iterator < /cod> если мы уверены, чтобы переместить каждую строку, один раз, < /br /li std :: istream_iterator Если мы будем ссылаться на один и тот же итератор более одного раза. Какое обоснование решения?
Подробнее здесь: https://stackoverflow.com/questions/797 ... teratorstd
Мобильная версия