关闭

STL map

151人阅读 评论(0) 收藏 举报
分类:

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】http://blog.csdn.net/it_yuan/article/details/22697205

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:6620次
    • 积分:319
    • 等级:
    • 排名:千里之外
    • 原创:25篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类