无法理解c++中map的用法

Could not Understand the usage of map in c++

本文关键字:map 用法 c++      更新时间:2023-10-16

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中的数据的通用方法;您可以使用之前获得迭代器的基本技术: