Как вы создаете хэш-таблицу в C ++? - PullRequest
0 голосов
/ 02 декабря 2010

Я создаю простую хэш-таблицу в VS 2008 C ++.

#include <map>
std::map <string, char> grade_list;
grade_list["John"] = 'B';

Я получаю сообщение об ошибке: ошибка C2057: ожидаемое постоянное выражение

Что это значит?Есть ли в библиотеке boost что-то лучше?

Спасибо!

Ответы [ 3 ]

10 голосов
/ 02 декабря 2010

Прежде всего std::map - это древовидная карта, а не хеш-карта.

Причина, по которой вы получаете ошибку, заключается в том, что вы не #include <string> не указали ссылку на string, и, следовательно, компилятор не знает, что string является классом.

6 голосов
/ 02 декабря 2010
#include <map>
#include <iostream>
#include <string>

int main() {
    std::map<std::string, char> grade_list;
    grade_list["John"] = 'B';
    std::cout << grade_list["John"] << std::endl;
    return 0;
}

Это прекрасно работает с g ++. Вы должны указать std :: before string в объявлении карты, как я сделал в своем коде.

1 голос
/ 02 декабря 2010

Код был перед основной функцией.

...