make_move_iterator из iterator оборачивает обычную позицию так.">
Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpSpItMI 59 of 696 menu
◀ ▶

Перемещающий итератор в C++

При переносе вместо копирования берут перемещающий итератор.

Функция make_move_iterator из iterator оборачивает обычную позицию так, что присваивание забирает ресурс. Подключите string для вектора строк.

Запишем вектор с одной непустой строкой, скопируем через перемещающий итератор и выведем длину исходного элемента:

std::vector<std::string> src = {"data"}; std::vector<std::string> dst; std::copy( std::make_move_iterator(src.begin()), std::make_move_iterator(src.end()), std::back_inserter(dst) ); std::cout << src[0].size() << "\n";

Печатается 0: строка в src стала пустой, а dst получил текст. Так экономят копирование тяжелых объектов при смене владельца.

В векторе из двух непустых строк перенесите обе в новый вектор так, чтобы в источнике обе строки стали пустыми. Выведите сумму длин в приемнике.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить