您的位置:首页 > 其它

STL map

2016-03-28 22:17 369 查看
stl中的map和set一样,都是关联性容器,内部实现是红黑树,所以检索速率高效。不同的是,map的数据形式是键值对,即Key-value。而且需要注意的是在map中,key值唯一,并默认会根据key的字典序进行升序排序。

数据插入

map添加数据可以有四种方式,分别是通过pair组合成键值对的形式,和数组的方式添加。

#include <iostream>
#include <string>
#include <map>

//******************************************************************
//FUNCTION:
void addMapElements(std::map<int, std::string>& vMap)
{
vMap.insert(std::make_pair(1, "zhang san"));
vMap.insert(std::pair<int, std::string>(3, "li si"));
vMap.insert(std::map<int, std::string>::value_type(2, "wang wu"));
vMap[5] = "freehyan";
}

//******************************************************************
//FUNCTION:
void printMap(const std::map<int, std::string>& vMap)
{
std::map<int, std::string>::const_iterator It;
for (It=vMap.begin(); It!=vMap.end(); It++)
{
std::cout << It->first << " " << It->second << std::endl;
}
}

int main()
{
std::map<int, std::string> Map;

addMapElements(Map);
printMap(Map);

return 1;
}


数据查找

map数据查找可以通过find和count函数,他们都是查找key值,如果存在,find()返回的是相应迭代器的指针,而count()返回的数值>=1。

multimap

与map中key键值唯一不同,multimap允许键值重复,这是最重要的不同点。而且上面代码中map可以通过类似数组的形式添加数据,multimap是不可以的,只能通过其他三种形式。

【参考资料】

【1】http://www.cplusplus.com/reference/map/map/

【2】http://www.yolinux.com/TUTORIALS/CppStlMultiMap.html

【3】/article/8285613.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: