无法理解c++中map的用法
Could not Understand the usage of map in c++
Map是一个用于存储聚合数据的容器类…由于它使用哈希算法进行检索,因此非常容易检索存储在其中的数据。Map是一个键值对…可以使用相应的键来检索数据…在下面的声明中,我定义了键必须是整数(4字节)和数据作为字符串值…
typedef map<INT32U,string> EventMapType;
我在维基百科上搜索了使用地图的示例程序…但是我不能理解那里给出的例子,我需要知道数据和键是如何存储在地图中的,以及如何通过键来检索…我是MFC新手…
,
我只是做了一个快速谷歌,并提出http://erunways.com/c-using-the-standard-template-library-stl-map-example/我不会只是复制粘贴代码在这里…只有大约50行。
我建议您通读这段代码,然后按原样编译并运行它。如果你遇到了问题,或者只是一些你不理解的东西,那么在这里问一些具体的问题。K ?
欢呼。基斯。
map
不使用哈希。它不能,因为约束不需要哈希键。它通常被实现为一个二叉搜索树,按键排序。因此,它要求键为<-comparable
相反,c++ 0x将提供一个unordered_map
,它确实使用哈希。
如果你需要具体的帮助,你应该告诉我们到目前为止你试过哪些代码,哪些例子你不懂。
STL的map类允许您通过任何类型的键来存储数据,而不是简单地通过数字键来存储数据,这是必须访问数组或向量的方式。因此,不必计算哈希函数然后访问数组,只需让map类为您完成即可。
typedef map<INT32U,string> MyEventMapType;
MyEventMapType EventMapType;
使用下面的代码作为参考。
存储值:
EventMapType[key1] = string1 ;
EventMapType[key2] = string2 ;
EventMapType[key3] = string3 ;
检查价值key1…
if(EventMapType.find("key1") == EventMapType.end())
{
std::cout<<"string1 is not in the map!"<<endl;
}
更多信息请阅读文档
迭代器也可用作访问存储在map中的数据的通用方法;您可以使用之前获得迭代器的基本技术:
相关文章:
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 使用一个考虑到std::map中键值的滚动或换行的键
- 这个指针在c++中的用法
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 允许从 std::map 的密钥窃取资源?
- 有没有办法对std::unordered_set、std::unrdered_map、std::set、std::map
- 将重物插入std::map
- 当C++中需要自动删除时,这是静态的正确用法吗?
- libstdc++ 文件系统中未初始化的用法?
- 使用通用值初始化 std::map,不重复
- 仅包含可移动 std::map 的类的移动构造函数不起作用
- C++:当所有条目都保证是唯一时,替代 std::map
- 使用模板化的键类型定义 std::map,该键类型基于作为参数接收的函数
- 如果 KEY 是 std::list 或 std::vector 而不是值,那么 std::map 的默认行为是什么?
- 复制和交换习惯用法与移动操作之间的交互
- 类作用域的类型别名"using":[何时]方法中的用法可以先于类型别名?
- 使用字符数组作为 Map 中的键
- std::map 的线程安全用法
- 无法理解c++中map的用法