У меня есть куча методов, которые возвращают vector<int>
. Они не возвращают ссылку или указатель на vector<int>
, потому что возвращаемое значение не является частью состояния класса, оно просто генерируется «на лету» в зависимости от аргументов метода.избежать векторной копии конструктора
Я хотел бы избежать vector<int>
экземпляр копирования, вызываемый при вызове метода, подобного этому.
vector<int> result = myClass.GenerateVectorOfInt(/* params */);
// Do something with the result;
Каков наилучший способ для этого?
Будет ли это приемлемым способом? Или есть другие лучшие или более элегантные решения.
vector<int> result = std::move(myClass.GenerateVectorOfInt(/* params */));
Вы [проверили] (http://coliru.stacked-crooked.com/a/4fe331ecaf9498e7), что на самом деле вызывается конструктор копирования? – chris
Не раньше, чем я разместил вопрос. Я поставил точку останова в конструкторе копии вектора, и он не попал. – mk33