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

Функция move

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

Синтаксис

std::move(obj)

Пример

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

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

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

"str1: " "str2: abcde"

Пример

Давайте переместим вектор чисел в другой вектор и проверим состояние исходного:

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

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

"v2 size: 5" "v1 size: 0"

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

  • функция forward,
    которая сохраняет тип ссылки при передаче
  • шаблон remove_reference,
    который удаляет ссылку из типа
  • шаблон decay,
    который преобразует тип к базовому виду
  • шаблон declval,
    который получает rvalue-ссылку в невычисляемом контексте
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить