С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
Сгибальщик
42 / 42 / 4
Регистрация: 18.05.2013
Сообщений: 220
1

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

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

Author24 — интернет-сервис помощи студентам
Решил реализовать шарповскую String.Split().
Она должна возвращать vector<string>, следовательно либо для него надо выделять место в куче, что нежелательно, либо возвращать по значению. Слишком ли большой будет потеря по времени в последнем случае из-за копирования или это дело как-то оптимизируется?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.02.2014, 22:36
Ответы с готовыми решениями:

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

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

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

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

4
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
07.02.2014, 22:42 2
Лучший ответ Сообщение было отмечено Бендерродригез как решение

Решение

если новый стандарт - то потери минимальны.
вектор должен замувится. но можно и помочь компилятору если параннойя:
return std::move(splitResult);

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

Добавлено через 5 минут
Цитата Сообщение от DU Посмотреть сообщение
в старом стандарте обычно в таких случаях построенный вектор в функцию по ссылке
передают, где он и заполняется. динамически еще раз копию создавать - это какой-то
ненужный оверхед.
Да тут дело просто в синтаксисе.
Всё-таки, функция, возвращающая и изменяющая параметр - это немного разные стили.
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
07.02.2014, 22:49 4
Лучший ответ Сообщение было отмечено Бендерродригез как решение

Решение

верните вектор с импользованием std::move
если скомпиляется - то ничего не надо. std::move ввели в новом стандарте.
12 студия это умеет, 13 стало быть тоже должна без доп настроек.
0
292 / 172 / 47
Регистрация: 22.03.2010
Сообщений: 488
07.02.2014, 22:53 5
Даже при использовании компиляторов, которые на поддерживают C++11, обычно можно рассчитывать на оптимизацию NRVO, благодаря которой не должно возникнуть проблем с производительностью.
0
07.02.2014, 22:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.02.2014, 22:53
Помогаю со студенческими работами здесь

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

Функция возвращающая значение
Надо переделать штоб функции не были void а позвращали значение в главную функцию Задание:...

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru