0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 200
|
||||||
1 | ||||||
шаблон map.find()22.01.2020, 03:23. Показов 3391. Ответов 9
Метки нет (Все метки)
Нужно сделать шаблон который передаст ссылку на значение по ключу. Вроде должно работать, но никак не могу вернуть ссылку из функции.
0
|
22.01.2020, 03:23 | |
Ответы с готовыми решениями:
9
Почему map.find не доработают для std::find Некорректная работа Map.find Ошибка в поиске find элемента из map Некорректная работа .find() для map |
Вездепух
11691 / 6370 / 1723
Регистрация: 18.10.2014
Сообщений: 16,052
|
|
22.01.2020, 03:26 | 2 |
Во-первых, о какой "ссылке на значение" вообще может идти речь, если у вас параметр
m передается в функцию по значению, т.е. будет уничтожен вместе со всеми потрохами по выходу из функции? А вы на эти потроха собрались ссылку формировать...Во-вторых, find возвращает итератор, а не ссылку на значение.
0
|
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 200
|
|
22.01.2020, 03:28 [ТС] | 3 |
0
|
Вездепух
11691 / 6370 / 1723
Регистрация: 18.10.2014
Сообщений: 16,052
|
|
22.01.2020, 03:34 | 4 |
"Не помогла" от чего? У вас в коде еще ужаса всякого навалом.
* Map свой вы передаете по константной ссылке, что означает, что ссылки на его внутренности вы сможете формировать тоже только константные. Хотите формировать неконстантные ссылки на данные - передавайте сам map по неконстантной ссылке. * find возвращает итератор на элемент map, а не ссылку на данные.* Элементом map является std::pair из ключа и данных. Вас, очевидно, интересует поле second этой пары.Все это вам нужно учесть в своем коде.
0
|
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 200
|
|
22.01.2020, 03:44 [ТС] | 5 |
вот у меня есть map<int,string> m, если я напишу m.find(10) то вернется pair? а как тогда получить pair.second?
Я видел что некоторые обращаются с нему как pair->second, но у меня так не работает. Добавлено через 5 минут Не помогла решить проблему
0
|
Вездепух
11691 / 6370 / 1723
Регистрация: 18.10.2014
Сообщений: 16,052
|
|
22.01.2020, 03:45 | 6 |
Сколько можно повторять одно и то же: не pair, а итератор на pair?
Вопрос, в котором содержится ответ? Если у вас есть pair , то pair.second получается именно как pair.second . Однако у вас итератор на pair.Я не знаю, что у вас там сейчас понаписано и что у вас там "не работает".
0
|
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 200
|
|
22.01.2020, 04:02 [ТС] | 7 |
Ладно, как из итератора на pair получить second? Или может pair.second или там pair->second? Хоть что-нибудь из этого.
У моего pair нет никаких функций-членов, если бы были я бы не спрашивал. Может это из-за Qt Creator? Но до этого он всегда нормально работал. Добавлено через 3 минуты Если в маине писать то есть функции_члены
0
|
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 200
|
|
22.01.2020, 04:06 [ТС] | 8 |
0
|
Вездепух
11691 / 6370 / 1723
Регистрация: 18.10.2014
Сообщений: 16,052
|
|
22.01.2020, 04:41 | 9 |
Если вы будете на лету заниматься беспорядочными слепыми изменениями кода, то ничего не получится. С чего это друг тип возврата вашей функции вдруг стал указателем??? И это при том, что тут вы нам упорно твердите, что хотите вернуть ссылку.
И я уже говорил выше: * Map свой вы передаете по константной ссылке, что означает, что ссылки на его внутренности вы сможете формировать тоже только константные. Хотите формировать неконстантные ссылки на данные - передавайте сам map по неконстантной ссылке.
1
|
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 200
|
||||||
22.01.2020, 05:07 [ТС] | 10 | |||||
О работает
0
|
22.01.2020, 05:07 | |
22.01.2020, 05:07 | |
Помогаю со студенческими работами здесь
10
шаблон map std::map find. Получить ключ(элемент) и как записать все данные при объявлений? Создать шаблон, который работает подобно алгоритму find _InIt std::find(): в шаблон параметр "_InIt" неоднозначен. Как исправить? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |