Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Бендерродригез
Сгибальщик
42 / 42 / 3
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
#1

Функция, возвращающая vector - C++

07.02.2014, 22:36. Просмотров 755. Ответов 4
Метки нет (Все метки)

Решил реализовать шарповскую String.Split().
Она должна возвращать vector<string>, следовательно либо для него надо выделять место в куче, что нежелательно, либо возвращать по значению. Слишком ли большой будет потеря по времени в последнем случае из-за копирования или это дело как-то оптимизируется?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2014, 22:36     Функция, возвращающая vector
Посмотрите здесь:

Функция, возвращающая массив - C++
Нужно вернуть из функции массив. int F(int a,int* b) { for(int i=0;i&lt;a;i++) *b++; for(int i=0;i&lt;3;i++) printf(&quot;%d\n&quot;, b); ...

Функция, возвращающая значение - C++
сам не могу осилить

Функция, возвращающая массив - C++
Задача: В двумерном целочисленом массиве заданного размера найти номера строк, элементы которых образуют убявающую последовательность. ...

Функция возвращающая константу - C++
Почему добавление спецификатора const ничего не меняет? const int f(int a) { return a; } int main(int argc, char *argv)...

Функция, возвращающая массив - C++
Возможно ли что функция возвращает массив. Если да то было бы хорошо листинг программы где выполняется такая реализация Спасибо!

Функция возвращающая массив - C++
Здравствуйте. Для возврата массива возвращаю указатель на него, но вне предела области в которой он был создан память выделенная под массив...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
07.02.2014, 22:42     Функция, возвращающая vector #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
если новый стандарт - то потери минимальны.
вектор должен замувится. но можно и помочь компилятору если параннойя:
return std::move(splitResult);

в старом стандарте обычно в таких случаях построенный вектор в функцию по ссылке
передают, где он и заполняется. динамически еще раз копию создавать - это какой-то
ненужный оверхед.
Бендерродригез
Сгибальщик
42 / 42 / 3
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
07.02.2014, 22:48  [ТС]     Функция, возвращающая vector #3
Цитата Сообщение от DU Посмотреть сообщение
если новый стандарт - то потери минимальны.
вектор должен замувится. но можно и помочь компилятору если параннойя:
return std::move(splitResult);
Я ещё не дошёл до этого.
VS2013 это поддерживает и нужны ли какие-то особые настройки?

Добавлено через 5 минут
Цитата Сообщение от DU Посмотреть сообщение
в старом стандарте обычно в таких случаях построенный вектор в функцию по ссылке
передают, где он и заполняется. динамически еще раз копию создавать - это какой-то
ненужный оверхед.
Да тут дело просто в синтаксисе.
Всё-таки, функция, возвращающая и изменяющая параметр - это немного разные стили.
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
07.02.2014, 22:49     Функция, возвращающая vector #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
верните вектор с импользованием std::move
если скомпиляется - то ничего не надо. std::move ввели в новом стандарте.
12 студия это умеет, 13 стало быть тоже должна без доп настроек.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2014, 22:53     Функция, возвращающая vector
Еще ссылки по теме:

Функция возвращающая ссылку - C++
Так делать не правильно, но попытался написать код: int&amp; func(int &amp;x) { return &amp;x; } В чем ошибка?

Функция возвращающая массив - C++
#include &lt;iostream&gt; #include &quot;conio.h&quot; int *convertToBin() { int a = { 1, 2, 3, 4, 5}; return a; } int...

Функция, возвращающая ссылку - C++
Помогите исправить функцию, которая возвращает ссылку на массив size_t Crd() { size_t crd; return &amp;crd; }

Функция, возвращающая текущую дату - C++
никак толком не могу разобратса с библиотекой time.h можите сказать точную функцию которая возвратит текущую дату и какие аргументы она...

Функция, возвращающая объект класса - C++
Всем доброго времени суток. Хотел бы узнать правильное описание функции возвращающей объект класса. У меня есть class Matches {} ...

Функция, возвращающая объект класса - C++
Visual c++ Visual Studio 2010 Есть задание, в котором, нужно создать класс и некоторые методы. Я создал public ref class. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Hrobak
288 / 168 / 11
Регистрация: 22.03.2010
Сообщений: 483
Завершенные тесты: 1
07.02.2014, 22:53     Функция, возвращающая vector #5
Даже при использовании компиляторов, которые на поддерживают C++11, обычно можно рассчитывать на оптимизацию NRVO, благодаря которой не должно возникнуть проблем с производительностью.
Yandex
Объявления
07.02.2014, 22:53     Функция, возвращающая vector
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru