Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.60/25: Рейтинг темы: голосов - 25, средняя оценка - 4.60
Каждому свое
 Аватар для Bretbas
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614

Возврат контейнера STL из функции

19.12.2016, 21:13. Показов 6118. Ответов 47
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как правильно вернуть STL контейнер из функции НЕ ПО ЗНАЧЕНИЮ?
C++
1
2
3
4
std :: map<std :: string, BTSComponent*> BTSObject :: getComponents() const
{
    return std :: move( _components );
}
Так?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.12.2016, 21:13
Ответы с готовыми решениями:

Из STL контейнера
Из STL контейнера создать 3-х мерный массив и класс который содержит этот 3-х мерный массив и вывод координат(пользователь вводит...

Выбор контейнера в STL
Здраствуйте! Нужно выбрать к этой задаче контейнер STL, который более выгодно подойдет, кроме вектора. Я думаю, что deque или map Помогите...

STL итератор на конец контейнера
Подскажите пожалуйста у меня задача сделать дерево и слизать интерфейс с STL std::map. Вопрос в следующем: когда мы обходим map итератором...

47
Каждому свое
 Аватар для Bretbas
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
24.12.2016, 09:45  [ТС]
Студворк — интернет-сервис помощи студентам
Mr.X, а что auto отбрасывает? Я где-то читал, что константность он не отбрасывает, тоесть если я напишу вот так:
C++
1
2
3
4
5
6
7
const std :: map<std :: string, BTSComponent*>& BTSObject :: getComponents() const
{
    return _components;
}
...
 
auto& components = object -> getComponents();
это будет тоже самое, что и:
C++
1
2
3
4
5
6
7
const std :: map<std :: string, BTSComponent*>& BTSObject :: getComponents() const
{
    return _components;
}
...
 
const auto& components = object -> getComponents();
Добавлено через 14 минут
Да, и еще, у мапы есть метод find, который возвращает итератор на найденный элемент. Если я напишу так:
C++
1
const auto& it = _components.find( someKey );
Какой тип it я получу, если мапа имела вид: std :: map<std::string, BTSComponent*> _components ? Я думаю, что const std::map<std::string, BTSComponent*> :: iterator&
Но есть ли толк, получать итератор по константной ссылке?
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
24.12.2016, 11:17
Цитата Сообщение от Bretbas Посмотреть сообщение
Mr.X, а что auto отбрасывает? Я где-то читал, что константность он не отбрасывает
Ну да, я тоже про это читал, но так-то auto дан нам для того чтобы облегчить чтение и написание кода, а не впадать в излишнюю хвилософию.
Если вы напишете
C++
1
auto const & name
то читатель сразу поймет, что ссылка константная, иначе ему придется заняться философскими рассуждениями по поводу константности auto или начать подбирать наиболее подходящие эпитеты (может быть не совсем цензурные) к ндивидую, написавшему такой код!
1
Каждому свое
 Аватар для Bretbas
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
24.12.2016, 11:24  [ТС]
Mr.X, а что по поводу find у мапы? Следует так писать:
C++
1
const auto& it = _components.find( someKey );
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
24.12.2016, 11:54
Цитата Сообщение от Bretbas Посмотреть сообщение
а что по поводу find у мапы? Следует так писать:
C++
1
const auto& it = _components.find( someKey );
Ну, итератор ссылается на данные, а не хранит их, так что не может быть очень большим, так чего с ним церемониться и бояться его копировать?
1
Каждому свое
 Аватар для Bretbas
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
24.12.2016, 12:21  [ТС]
Mr.X,
Ну, итератор ссылается на данные, а не хранит их, так что не может быть очень большим, так чего с ним церемониться и бояться его копировать?
Базара нет) Просто меня это нововведение с auto совсем запутало Cпасибо
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
24.12.2016, 12:54
Цитата Сообщение от Bretbas Посмотреть сообщение
нововведение с auto совсем запутало
Скотт Мейерс "Эффективный и современный С++. 42 рекомендации по использованию С++11 и С++14".
Глава 1 и 2.
1
Каждому свое
 Аватар для Bretbas
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
24.12.2016, 13:17  [ТС]
GbaLog-, я уже почти дочитал. Все понятно...но применять это на деле, как то пугает
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
24.12.2016, 13:41
Цитата Сообщение от Mr.X Посмотреть сообщение
не может быть очень большим, так чего с ним церемониться и бояться его копировать?
зачем копировать,
если можно поиметь профит ничего не копируя?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.12.2016, 13:41

Обработка STL контейнера vector
Текст дан в виде вектора. Отсортировать элементы этого вектора и превратить на два списка так, чтобы в первом были только те элементы,...

Адаптация контейнера под STL
Учу C++, на данный момент было задание: реализовать односвязный список. Пока что реализовано не все, но возник такой вопрос: &quot;Почему...

Алгоритм выбора контейнера STL
Привет. Существует ли некая таблица по таким контейнерам с кратким описанием плюсов и минусов каждого по сравнению с другими? И в обще...

Использование контейнера string из библиотеки STL
Дан массив слов. Сформировать новое слово из символов слов массива, стоящих после последнего символа ‘*’ в слове. Сформировать предложение...

Реализация примитивного STL совместимого контейнера
Как то застрял на этом. Как правильно объявить все typedef для итератора? Нужен минимальный набросок такого контейнера.template&lt;typename...


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

Или воспользуйтесь поиском по форуму:
48
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru