Я создаю простую хэш-таблицу в VS 2008 C ++.
#include <map> std::map <string, char> grade_list; grade_list["John"] = 'B';
Я получаю сообщение об ошибке: ошибка C2057: ожидаемое постоянное выражение
Что это значит?Есть ли в библиотеке boost что-то лучше?
Спасибо!
Прежде всего std::map - это древовидная карта, а не хеш-карта.
std::map
Причина, по которой вы получаете ошибку, заключается в том, что вы не #include <string> не указали ссылку на string, и, следовательно, компилятор не знает, что string является классом.
#include <string>
string
#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 в объявлении карты, как я сделал в своем коде.
Код был перед основной функцией.