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

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

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

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

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

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

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

Не работает функция sort (vector, vector) - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;vector&gt; #include &lt;string&gt; #include &lt;algorithm&gt; using namespace std; class...

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

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

Функция, возвращающая указатель - C++
Добрый вечер. Требуется написать программу, содержащую структуру вида type1 *имя(type2); т.е. функцию, которая принимает аргумент типа...

4
DU
1483 / 1129 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
07.02.2014, 22:42 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
если новый стандарт - то потери минимальны.
вектор должен замувится. но можно и помочь компилятору если параннойя:
return std::move(splitResult);

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

Добавлено через 5 минут
Цитата Сообщение от DU Посмотреть сообщение
в старом стандарте обычно в таких случаях построенный вектор в функцию по ссылке
передают, где он и заполняется. динамически еще раз копию создавать - это какой-то
ненужный оверхед.
Да тут дело просто в синтаксисе.
Всё-таки, функция, возвращающая и изменяющая параметр - это немного разные стили.
0
DU
1483 / 1129 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
07.02.2014, 22:49 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
верните вектор с импользованием std::move
если скомпиляется - то ничего не надо. std::move ввели в новом стандарте.
12 студия это умеет, 13 стало быть тоже должна без доп настроек.
0
Hrobak
289 / 169 / 11
Регистрация: 22.03.2010
Сообщений: 483
Завершенные тесты: 1
07.02.2014, 22:53 #5
Даже при использовании компиляторов, которые на поддерживают C++11, обычно можно рассчитывать на оптимизацию NRVO, благодаря которой не должно возникнуть проблем с производительностью.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2014, 22:53
Привет! Вот еще темы с ответами:

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

Функция, возвращающая указатель - C++
Нужно написать функцию, входящие параметры которой являются указателем на структуру. Заполнить в функции структуру (не важно). Возвратить...

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

Функция, возвращающая указатель - C++
Здравствуйте. Пускай есть класс Some_type и массив такого класса. Можно ли функцией Some_type* some_name (some_type) заполнять массив,...


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
07.02.2014, 22:53
Ответ Создать тему
Опции темы

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