Здравствуйте, Vegost, Вы писали:
V>Есть функция которая по ряду причин может иметь возвращаемый тип только void V>правильно ли будет так возвращать vector из функции
V> void create(vector<Points>& points) V> { V> vector<Points> v; V> points = v; V> } V>main() V>{ V> vector<Points> a; V> create(a); V>}
V>не будет ли какого нибудь лишнего копирования или чего доброго не прибьет ли выход из функции create созданную на стеке временную переменную v?
Лишнего не будет, но копирование один раз будет вызвано в месте где points = v;
Здравствуйте, Vegost, Вы писали:
V>не будет ли какого нибудь лишнего копирования или чего доброго не прибьет ли выход из функции create созданную на стеке временную переменную v?
все будет хорошо, но, если локальный вектор тебе уже не нужен, ты можешь лишнее копирование убрать:
Здравствуйте, Dair, Вы писали:
V>>не будет ли какого нибудь лишнего копирования или чего доброго не прибьет ли выход из функции create созданную на стеке временную переменную v?
D>Лишнего не будет, но копирование один раз будет вызвано в месте где points = v; D>поэтому я бы так не делал, а делал бы сразу
D>
Мы не знаем, как формируется внутренний массив и какие требования к целостности данных.
Если таки необходимо строить данные в локальном массиве, то я бы сделал вместо
points = v;
по старинке
points.swap(v);
// или по-современному
points = std::move(v);
_____________________
С уважением,
Stanislav V. Zudin
Здравствуйте, Dair, Вы писали:
D>Лишнего не будет, но копирование один раз будет вызвано в месте где points = v; D>поэтому я бы так не делал, а делал бы сразу D>