|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||||||
Возврат контейнера STL из функции19.12.2016, 21:13. Показов 6111. Ответов 47
Метки нет (Все метки)
Как правильно вернуть STL контейнер из функции НЕ ПО ЗНАЧЕНИЮ?
0
|
||||||
| 19.12.2016, 21:13 | |
|
Ответы с готовыми решениями:
47
Из STL контейнера Выбор контейнера в STL STL итератор на конец контейнера |
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||||||
| 20.12.2016, 17:20 [ТС] | ||||||
|
Всем спасибо, я че-то затупил с этими перемещениями и ссылками. Да, Вы правы, есть контейнер - std :: map, как член класса. Мне нужно его вернуть из функции, но чтобы при этом не создавалась копия, так как хранит этот вектор много элементов. Я вначале не мог догнать такую элементарщину, так как вовсе запутался с &&, & и *. Я так понял, мне нужно просто вернуть этот вектор по константной ссылке, так?
0
|
||||||
|
495 / 209 / 70
Регистрация: 27.05.2016
Сообщений: 557
|
||||||||||||
| 20.12.2016, 18:07 | ||||||||||||
std::move() из константной функции-члена не сможет правильно преобразовать тип к не константной rvalue.
1
|
||||||||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 20.12.2016, 19:00 | ||
|
например - именем макроса, и привет коллизиям. к тому же, глобальные имена в принципе успешно конкурируют со всякими данными-членами классов.
0
|
||
|
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
|
|||
| 20.12.2016, 19:25 | |||
|
По поводу макросов...можете пояснить подробнее , желательно на примере. Ведь так как макрос это просто текстовая подстановка выполняемая препроцессором,то разве все возможные коллизии не будут выявляться на этапе компиляции?
0
|
|||
|
Неэпический
|
|
| 20.12.2016, 21:28 | |
|
0
|
|
|
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
|
|
| 20.12.2016, 22:02 | |
|
0
|
|
|
1379 / 406 / 144
Регистрация: 22.10.2014
Сообщений: 872
|
|
| 20.12.2016, 22:41 | |
|
Хозяйкам на заметку : там определяется более 20000 макросов
1
|
|
|
Форумчанин
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||||||||||||
| 20.12.2016, 23:35 | ||||||||||||
|
Добавлено через 5 минут Попробуйте в студии объявить функцию
0
|
||||||||||||
|
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
|
|
| 20.12.2016, 23:38 | |
|
0
|
|
|
Форумчанин
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||
| 20.12.2016, 23:43 | ||
|
Пример того, во что это выльется - выше. Причем область видимости не спасёт. Просто не рекомендуется это делать. Но, ИМХО, UB - слишком тяжелое обвинение.
2
|
||
| 20.12.2016, 23:48 | |
|
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 21.12.2016, 00:51 | ||
|
http://rextester.com/RDJ46212 gcc http://rextester.com/KGOB62029 про макросы вообще молчу.
4
|
||
|
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
|
|
| 21.12.2016, 00:57 | |
|
hoggy, спасибо за пример, утром посмотрю.
Про макросы вроде уже выяснили, что не могут быть UB т.к. вызывают ошибку до выполнения.
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 21.12.2016, 01:44 | |
|
0
|
|
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|
| 21.12.2016, 09:15 [ТС] | |
|
Ребят, еще один вопрос на эту тему, если я работаю в начале в дебаге, и мне нужно сделать так, чтобы я из функции вернул временный объект за счет перемещения, то так как я нахожусь в дебаге, я делаю это явно, так? Но к примеру, я знаю, что мой компилятор сможет оптимизировать код при релизе, мне нужно удалять std::move из функции?
0
|
|
|
Форумчанин
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||
| 21.12.2016, 09:36 | ||
![]() А т.к. move здесь написан с единственной целью - "оптимизировать код", то его можно смело выкинуть. Тем более, что возврат lvalue итак справляется с данной задачей.
1
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||||||||
| 21.12.2016, 11:55 | |||||||||||||
http://rextester.com/XCO7069
-Wall -std=c++14 -O2 -o a.out source_file.cppв результате имеем:
1
|
|||||||||||||
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||||||
| 22.12.2016, 08:12 [ТС] | ||||||
|
Ребят, а какой тип вернет auto, если функция возвращает константную ссылку?
0
|
||||||
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||||||||||||
| 22.12.2016, 10:36 | ||||||||||||
1
|
||||||||||||
| 22.12.2016, 10:36 | |
|
Обработка STL контейнера vector Адаптация контейнера под STL
Реализация примитивного STL совместимого контейнера Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Генератор паролей (вариант №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. Скачиваем с. . .
|
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге).
Задача:
Программно добавить префикс в нумерацию документов.
Решение:
В модуле объекта. . .
|