Map是一个容器类,用于存储聚合数据......当使用哈希算法进行检索时,很容易检索存储在其中的数据。 map是键值对...可以使用相应的键检索数据... 在下面的这个声明中,我定义了键必须是整数(4个字节),数据作为字符串值...
typedef map<INT32U,string> EventMapType;
我搜索了在维基百科中使用地图的示例程序...但我无法理解那里给出的示例..我需要知道数据和键如何存储在地图中以及如何通过关键......我是MFC的新手......
答案 0 :(得分:3)
map
不使用散列。它不能,因为约束不需要可用的密钥。它通常实现为二进制搜索树,按键排序。因此,它需要键是&lt; -comparable
相反,C ++ 0x将提供unordered_map
,它确实使用散列。
如果您需要特定的帮助,您应该告诉我们您到目前为止尝试过的代码,以及您不理解的示例。
答案 1 :(得分:3)
贝娅塔,
我刚刚做了一个快速的谷歌并提出了http://erunways.com/c-using-the-standard-template-library-stl-map-example/我不会只是复制粘贴代码在这里...它只有大约50行。
我建议您阅读该代码,然后编译并运行它(按原样)。如果您遇到问题或只是对您没有意义的事情,请在此处提出具体问题。 K +
干杯。基思。
答案 2 :(得分:2)
STL的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;
}
如需更多阅读documentation
迭代器也可以用作访问存储在地图中的数据的一般方法;你可以在获得迭代器之前使用基本技术: