хеш-таблица / неупорядоченная карта в C ++ - PullRequest
1 голос
/ 18 июня 2011

Я ищу шаблон для хэш-карты, на который я могу положиться и использовать всякий раз, когда мне нужна хеш-таблица. Я пытался использовать hash_map, но обнаружил, что он устарел сейчас. Попытался с помощью unordered_map, но я получаю следующую ошибку -

error: #error This file requires compiler and library support for the upcoming ISO C++ s        tandard, C++0x. This support is currently experimental, and must be enabled with the -s    td=c++0x or -std=gnu++0x compiler options.

Теперь я полностью сбит с толку. Я использовал hashmap в Java, и это было приятно прямо. Это не так в C ++. Укажите мне, что использовать и как использовать хеш-таблицу в c ++.

Ответы [ 3 ]

4 голосов
/ 18 июня 2011

Сделайте то, что говорит сообщение об ошибке, вызовите g ++ следующим образом:

g++ -std=c++0x

После остальных аргументов.

3 голосов
/ 18 июня 2011

hash_map (точнее, unordered_map, как его называли, чтобы избежать коллизий имен) в последней версии C ++ (c ++ 0x или c ++ 11), но поддерживаются многие компиляторы, включая ваш это до этого. Ваш компилятор просто хорош и мешает вам писать потенциально непереносимый код без вашего явного согласия.

Как говорят другие, добавление -std=c++0x к параметрам компилятора позволит вам использовать hash_map,

Имейте в виду, что компиляция этого кода где-то еще потребует довольно современного компилятора c ++. (Это может не быть проблемой для вас ... если вы просто учитесь самостоятельно или не делитесь кодом вне офиса, у вас все будет хорошо ...)

3 голосов
/ 18 июня 2011

Просто используйте -std = c ++ 0x, когда вы компилируете, как написано в вашем сообщении об ошибке! В любом случае обычный интерфейс map в C ++ довольно оптимизирован, поэтому, если производительность не является абсолютно критичной, вам следует просто использовать контейнер map .

...