Не удается найти заголовок hash_map в Mac OSX - PullRequest
6 голосов
/ 10 февраля 2011
#include <iostream>
#include <vector>
#include <list>

#ifdef __GNUC__
#include <ext/hash_map>
#else
#include <hash_map>
#endif

Компилятор говорит: "hash_map: нет такого файла или каталога".спасибо.

Ответы [ 2 ]

12 голосов
/ 10 февраля 2011

В MacOSX правильный заголовок - <ext/hash_map>, а не <hash_map>.Здесь работало нормально:

#if defined __GNUC__ || defined __APPLE__
#include <ext/hash_map>
#else
#include <hash_map>
#endif

int main()
{
        using namespace __gnu_cxx;

        hash_map<int, int> map;
}

Кстати, я предпочитаю использовать <tr1/unordered_map>.

5 голосов
/ 10 февраля 2011

Заголовок <hash_map> не является частью стандарта C ++ и является специфичной для компилятора реализацией. Нет гарантии, что вы сможете найти его в любой конкретной системе или что различные реализации, которые возникают в каждой системе, будут взаимно совместимы друг с другом.

Если вы хотите использовать хэш-карту в C ++, вам может понадобиться изучить boost::unordered_map, tr1::unordered_map или прототип реализации компилятора C ++ 0x std::unordered_map. Эти реализации достаточно стандартизированы либо ISO, либо сообществом Boost и могут быть легко установлены на большинство компиляторов C ++. Я знаю, что немного самонадеянно просто сказать «переписать этот код, используя другую библиотеку», но, учитывая, что C ++ собирается получить хеш-контейнеры этой формы, это, вероятно, стоит инвестиций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...