как посмотреть hash_map в C ++? - PullRequest
0 голосов
/ 23 декабря 2009

Вот что у меня есть, я новичок в C ++, поэтому я не уверен, правильно ли это ...

typedef pair<string, int>:: make_pair;
hash_map <string, int> dict;
dict.insert(make_pair("apple", 5));

Я хочу дать моему hash_map "яблоко", и я хочу вернуть 5. Как мне это сделать?

Ответы [ 2 ]

9 голосов
/ 23 декабря 2009

hash_map не является стандартным C ++, поэтому вам следует проверить документацию по используемой вами библиотеке (или хотя бы сообщить нам ее название), но, скорее всего, это будет работать:

hash_map<string, int>::iterator i = dict.find("apple");

if (i == dict.end()) { /* Not found */ }
else { /* i->first will contain "apple", i->second will contain 5 */ }

В качестве альтернативы, если вы точно знаете, что "apple" находится в dict, вы также можете сделать: dict["apple"]. Например, cout << dict["apple"]; напечатает 5.

Кроме того, почему typedef в вашем коде? Разве вы не можете просто использовать std::make_pair? И это не скомпилирует, как вы написали (с двумя ведущими двоеточиями)

0 голосов
/ 06 июня 2011

Итерируйте вашу хэш-карту, вектор, список и другие структуры:

for(hash_map<string,int>::iterator i = dict.begin(); i != dict.end(); i++)
{
     cout << "key(string): " << i->first << ", value(int): " << i->second << endl;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...