C++中的哈希表/无序映射
hash table/ unordered map in C++
我正在寻找一个可以依赖的哈希图模板,并在需要哈希表时使用。我曾尝试使用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++中使用什么以及如何使用哈希表。
按照错误消息的指示,调用g++,如下所示:
g++ -std=c++0x
接下来是其余的论点。
hash_map
(或者更确切地说,unordered_map
,因为它是为了避免名称冲突而调用的)是最新版本的C++(C++0x,或者C++11),但在此之前,包括您的编译器在内的许多编译器都支持它。你的编译器只是很好,阻止你在没有明确同意的情况下编写潜在的不可移植代码。
正如其他人所说,在编译器选项中添加-std=c++0x
将允许您使用hash_map、
请注意,在其他地方编译该代码将需要一个相当现代的c++编译器。(这对你来说可能不是问题。如果你只是自己学习,或者没有在办公室外共享代码,你应该没事…)
编译时只需使用-std=c++0x,就像错误消息所说的那样!无论如何,C++中的普通映射接口都经过了相当优化,所以除非性能绝对关键,否则您应该只使用映射容器。
相关文章:
- 递归无序映射
- 正在将无序映射设置为无序映射的值
- 智能指针作为无序映射键,并通过引用进行比较
- 打印无序映射的第二个元素,即集合
- 由并发无序映射查找线程调用的函数是否安全?
- 将大数字(10-12 位数字)存储在无序映射中<字符串,整数>
- 使用无序映射在STL中存储键值对
- 为C++中的无序映射获取给定输入键的错误值
- 将大型对象存储在无序映射中是否效率低下
- 在无序映射的结构化绑定中推导类型
- 使用无序映射进行错误索引
- 将一个向量对放在一个无序映射与一个映射中
- 如何在c++中修改无序映射中的每个值
- C++:使用一对(cpp_int,int)整数作为无序映射中的键(其中cpp_int是boost多精度整数)
- 将 [] 索引到无序映射时出现段错误
- 以std::字符串作为关键字,按字典顺序对一个无序映射进行排序
- 无序映射存储桶的节点大小
- 在无序映射<字符串上使用 find(),向量<string>>与 C++ 中的有序映射花费相同的时间
- 以三个无符号字符为关键字的无序映射
- 无序映射比c++中的映射慢吗