Возвращение векторов стандартно в C ++

Теперь я знаю, что это общий вопрос, но я не смог найти прямого ответа на этот вопрос. Это действительно вопрос о стандартах. Я работаю над проектом с использованием генетического алгоритма. Но я сталкиваюсь с узким местом, когда дело доходит до возвращения вектора. Есть ли «правильный» способ сделать это. Обычно я использую динамически размещенные массивы и возвращаю указатель на вновь созданный массив.

obj* func(obj* foo);

Таким образом, все эффективно и нет копирования данных. Есть ли эквивалент сделать это с вектором? В этом векторе есть объекты, поэтому возвращать его по значению было бы медленно, я думаю. Является ли единственным решением передать «результирующий» вектор по ссылке?

void func(vector<obj> &input, vector<obj> &result);

И, на заметку для дальнейшего использования, является ли стандартной практикой использование вектора или другого контейнера STL над динамически размещаемым массивом? Используются ли динамически распределенные массивы только как инструмент низкого уровня для проектирования контейнеров? Они просто пережиток прошлого?

Ответы на вопрос(4)

Ваш ответ на вопрос