РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
658 of 815 menu

Функция move

Функция move из заголовочного файла utility преобразует переданный объект в rvalue-ссылку. Это позволяет компилятору выбрать конструктор перемещения или оператор присваивания перемещением вместо копирования. В первый параметр мы передаем объект, который нужно преобразовать, а второй параметр (шаблонный тип) обычно выводится автоматически. Сама функция не выполняет никаких действий с памятью - она лишь меняет категорию значения выражения.

Синтаксис

std::move(obj)

Пример

Давайте создадим строку str1 и переместим её содержимое в строку str2 с помощью функции move:

#include <iostream> #include <string> #include <utility> using namespace std; int main() { string str1 = "abcde"; string str2 = move(str1); cout << "str2: " << str2 << endl; cout << "str1: " << str1 << endl; return 0; }

Результат выполнения кода:

"str2: abcde" "str1: "

Пример

Давайте создадим вектор чисел и переместим его в другой вектор, чтобы избежать копирования:

#include <iostream> #include <vector> #include <utility> using namespace std; int main() { vector<int> vec1 = {1, 2, 3, 4, 5}; vector<int> vec2 = move(vec1); cout << "vec2 size: " << vec2.size() << endl; cout << "vec1 size: " << vec1.size() << endl; return 0; }

Результат выполнения кода:

"vec2 size: 5" "vec1 size: 0"

Смотрите также

  • функция forward,
    которая сохраняет категорию значения при идеальной передаче
  • функция swap,
    которая обменивает значения двух объектов
  • функция exchange,
    которая заменяет значение объекта и возвращает старое
  • оператор new,
    который выделяет память в куче
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить