32 / 4 / 0
Регистрация: 22.06.2011
Сообщений: 88
|
|||||||||||
1 | |||||||||||
std::map find. Получить ключ(элемент) и как записать все данные при объявлений?17.05.2012, 10:12. Показов 51067. Ответов 16
Метки нет (Все метки)
Вопрос первый:
как получить ключ контейнера map по данным? например:
Вопрос второй: Можно ли map инициализировать как простой массив?
0
|
17.05.2012, 10:12 | |
Ответы с готовыми решениями:
16
Emplace в std::map. Как добавить элемент в std::map без копирования? Почему map.find не доработают для std::find Составной ключ для std::map Std::map ключ из нескольких значений (одно из которых может быть не заполненно) |
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
|
|
17.05.2012, 10:29 | 2 |
1-й вопрос: Только идти по итераторам и делать It->second и проверять совпадает ли он с вашей строкой, тогда ответ it->first и никак иначе, в данной карте.
если уж, как вы говорите "грамотно" то map надо делать <string,int>, а не <int,string> в вашей задаче По итераторам идти очень долго, дольше чем O(n), а поиск в карте по ключам осуществляется за O(logn) Вопрос второй - нет, нельзя, да и не нужно
2
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
17.05.2012, 10:44 | 3 |
Ternsip, 2) Можно. Читайте новый стандарт.
1
|
Форумчанин
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||||||
17.05.2012, 10:47 | 4 | |||||
как-то так
1
|
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
|
|
17.05.2012, 10:57 | 5 |
MrGluck, да, я про это, этот поиск идёт за O(logn),это хорошо, но вдруг vendeme нужен отсорт по индексам ?
0
|
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
|
|
17.05.2012, 11:04 | 7 |
Не по теме: :D Виноват, очепятка =), уже пофиксил :-[ осторт -> отсорт (сортировка)
0
|
32 / 4 / 0
Регистрация: 22.06.2011
Сообщений: 88
|
|
17.05.2012, 11:37 [ТС] | 8 |
не верно, ключом является ID.
Добавлено через 2 минуты при таком раскладе я получаю крэш, и так раньше пробовал
0
|
Higher
|
|
17.05.2012, 11:39 | 9 |
Значит, элемента с таким ключом в мапе не было.
Тогда find возвращает итератор на свой конец, который нельзя разыменовывать, иначе может случится страшное(например, креш).
2
|
32 / 4 / 0
Регистрация: 22.06.2011
Сообщений: 88
|
|||||||||||
17.05.2012, 11:52 [ТС] | 10 | ||||||||||
я кажется кое что не понимаю с map.
Ведь first указывает на ключ, а second на данные.
Добавлено через 4 минуты ну верно, а почему тогда конструкция int id = bookMap.find("Pushkin")->second; не пашет? Добавлено через 1 минуту Вот общий код
0
|
32 / 4 / 0
Регистрация: 22.06.2011
Сообщений: 88
|
|
17.05.2012, 11:59 [ТС] | 12 |
Ну тогда я перепутал с контейнером, буду юзать старый дедовский многомерный массив
0
|
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
||||||
17.05.2012, 14:05 | 13 | |||||
Елси есть желание искать и по ключу, и по значению, и имеется boost, то там есть bimap:
А в std::map да, придётся перебирать все значения.
4
|
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
|
|||||||||||||||||||||
18.05.2012, 12:14 | 14 | ||||||||||||||||||||
vendeme, А вы юморист
Вы писали
Как нужно, если вам "наплевать" на порядок следования индексов (в итераторах) :
2
|
2 / 2 / 1
Регистрация: 06.10.2015
Сообщений: 91
|
|
20.02.2016, 12:01 | 15 |
Ternsip, это пример для string int - все работает верно.
Я сейчас смотрю ассоциативный контейнер по string string и это не работает Добавлено через 1 минуту Подскажите кто знает как получить итератор по поиску string? Он по первому искать надо. Добавлено через 38 секунд Добавлено через 55 секунд разобрался
0
|
0 / 0 / 0
Регистрация: 25.03.2022
Сообщений: 1
|
||||||
27.03.2022, 16:50 | 17 | |||||
0
|
27.03.2022, 16:50 | |
27.03.2022, 16:50 | |
Помогаю со студенческими работами здесь
17
Возможно ли создать контейнер std::map, в котором в качестве значения была бы ссылка на std::map? Не могу разобраться как обновить в std::map<std::string, вектор_структур> std:: find Не нашла элемент Очистка map и перевернутого std::map c std::greater Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |