C ++中的哈希表/ unordered_map

时间:2011-06-18 08:21:43

标签: c++ templates stl hash hashtable

我正在寻找一个我可以依赖的哈希映射模板,并且只要我需要哈希表就可以使用。我试图使用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.

现在,我完全糊涂了。我一直在java中使用hashmap,它非常直接。在c ++中并非如此。 指导我使用什么以及如何在c ++中使用哈希表。

3 个答案:

答案 0 :(得分:4)

执行错误消息所说的内容,按如下方式调用g ++:

g++ -std=c++0x

其次是其他论点。

答案 1 :(得分:3)

只需在编译时使用-std = c ++ 0x就像错误消息所说的那样!无论如何,C ++中的正常map接口已经过相当优化,因此除非性能绝对至关重要,否则您应该只使用map容器。

答案 2 :(得分:3)

hash_map(或更确切地说,unordered_map,因为它被称为避免名称冲突)是在最新版本的C ++(c ++ 0x或c ++ 11)中,但许多编译器,包括你的,在此之前支持它。您的编译器非常好,并且在未经您明确同意的情况下阻止您编写可能的非可移植代码。

正如其他人所说,将-std=c++0x添加到编译器选项将允许您使用hash_map,

请注意,在其他地方编译该代码将需要一个相当现代的c ++编译器。 (这对你来说可能不是问题..如果你只是自己学习或者不在办公室外共享代码,你应该没事......)