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

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

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

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

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

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

Функция возвращающая массив C++
C++ Функция, возвращающая массив
C++ Функция, возвращающая массив
Функция, возвращающая ссылку C++
C++ Функция возвращающая абсолютное разницу первого и второго параметров и функция типа int, возвращающая минимальное из трех целых чисел
C++ Функция, возвращающая указатель
Функция, возвращающая массив C++
C++ Не работает функция sort (vector, vector)
C++ Функция возвращающая массив
C++ Функция, возвращающая указатель
C++ Функция возвращающая константу
Функция возвращающая ссылку C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1480 / 1056 / 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
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
07.02.2014, 22:49     Функция, возвращающая vector #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
верните вектор с импользованием std::move
если скомпиляется - то ничего не надо. std::move ввели в новом стандарте.
12 студия это умеет, 13 стало быть тоже должна без доп настроек.
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
Ответ Создать тему
Опции темы

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