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

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

Войти
Регистрация
Восстановить пароль
 
tiny developer
0 / 0 / 0
Регистрация: 27.06.2013
Сообщений: 7
#1

Как получить элемент по ключу у map? - C++

08.07.2013, 15:55. Просмотров 665. Ответов 4
Метки нет (Все метки)

Никак не могу понять что я делаю не так...
У меня есть указатель
C++
1
std::map<int,std::string>* g;
в коде я его инициализирую адресом на реальный контейнер.
Далее хочу получить элемент с ключом 4:
C++
1
std::string f = g[4];
и эта строчка не хочет компилироваться... Долго мучаюсь но не могу понять что не так???
Подскажите мне пожалуйста!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2013, 15:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как получить элемент по ключу у map? (C++):

Map с поиском как по ключу, так и по значению - C++
Реализовано ли подобное в stl? (или в boost, например) И как в теории выглядит эта реализация? Предполагаю, что это два сбалансированных...

std::map find. Получить ключ(элемент) и как записать все данные при объявлений? - C++
Вопрос первый: как получить ключ контейнера map по данным? например: // id, name std::map&lt;int, string&gt; BookMap; BookMap bookmap; ...

Как вставить элемент и вывести элементы на экран в map<string, map<string,int>> ? - C++
У меня есть map&lt;string, map&lt;string,int&gt;&gt;, в него надо добавить элементы (типа Ivanov potato 200) Использовать именно map&lt;string,...

Удаления в Map по ключу - C++
Столкнулся с проблемой пытаюсь удалить по ключу в map и по итератору но нечего не происходит. вот код map&lt;string, int&gt;...

Emplace в std::map. Как добавить элемент в std::map без копирования? - C++
здравствуйте... есть ли способ не писать так: std::map&lt;int, char&gt; ksa; ksa.emplace(std::piecewise_construct, ...

Map c++ вывод на консоль по ключу - C++
Нужна помощь! У меня есть контейнер : map &lt;string, int&gt; m1 = { { &quot;wq&quot;, 1 }, { &quot;etr&quot;, 2 }, { &quot;weg&quot;, 4 } }; Нужно получить...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
08.07.2013, 16:06 #2
если почитать про работу мап, то можно заметить что оператор [] не подходит для обращения к элементу, потому что в случае отсутствия элемента с таким ключем, в контейнер добавяется еще один элемент с таким ключем, и значением, которое создаст дефолтный конструктор содержимого, а чтобы обратится адэкватный вариант:
C++
1
2
3
4
5
6
7
8
9
map<int,std::string>::iterator it = g->find(4);
if(it != g->end())
{
//элемент найден работай с ним по итератору наверное так std::string f = *it;
}
else
{
// элемент не найден
}
Добавлено через 2 минуты
а если Вы все же хотите обращатся оператором [] тогда попробуйте так:
C++
1
std::string f = *g[4];
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 831
08.07.2013, 16:11 #3
правильно будет так:
C++
1
2
3
4
5
6
std::string f;
try {
    f = g->at(4); //шлет out_of_range если ключ не найден
} catch (const exception &e) {
    cerr << "Ключ не найден";
}
Но вообще, если обращаться через указатель, то можно так:
C++
1
2
3
g->operator[](4);
или
(*g)[4];
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
08.07.2013, 16:14 #4
Цитата Сообщение от Olivеr Посмотреть сообщение
C++
1
(*g)[4];
согласен.
Насчет исключений, помоему файнд все таки адэкватнее...ну это видимо по желанию прогера
tiny developer
0 / 0 / 0
Регистрация: 27.06.2013
Сообщений: 7
08.07.2013, 16:22  [ТС] #5
спасибо всем огромное! Я применила ваши советы и у меня получилось!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2013, 16:22
Привет! Вот еще темы с ответами:

Контейнер map. Поиск по заданному ключу - C++
Нужно осуществить поиск по заданному ключу. Программа учета в интернет-магазине К примеру вводится название цена ...

Контейнер map. Осуществить ввод элементов и поиск по ключу - C++
Поиск работает, но как сделать чтобы чтобы можно было вводить элементы с клавиатуры и искать по ключу вводом с клавиатуры? #include...

Метод, возвращающий данные по имеющемуся ключу массива MAP - C++
Исходный код: #include &lt;string&gt; #include &quot;map.h&quot; class Recipe{ protected: AnsiString name_recipe; //название...

Сортировка map по значению int в порядке убывания и частично по ключу char :) - C++
Добрый день. Помогите, пожалуйста, отсортировать std::map &lt;char, int&gt; a. Например, у меня есть такие элементы: 5 5 3 8 ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.07.2013, 16:22
Ответ Создать тему
Опции темы

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