西大的阳光下有大洋的影子

我不上网了

c++STL系列之Map

开头总结:

C++中STL的概念总结:

1、容器 

2、迭代器

STL中所有的不同库都是容器的概念体现,基本操作都是基于迭代器的操作。

一、Map初级用法:

//声明
    map<int,string> m;//无参声明
    map<int,string> m1 = {
            {1,"one"},
            {2,"two"},
            {3,"three"},
    };

    //基本功能
    m.empty();//判空操作
    m1.size();//map的大小
    m1.at(1);//得到key对应的value,等价于m1[1];
    m1.clear();//清空map
  //map打印
for (map<int,string>::iterator it=m1.begin();it!=m1.end();it++)
{
cout<<it->first<<" "<<it->second<<endl;
}

  

二、Map高级用法:

map和set的插入删除效率比用其他序列容器高?因为对于关联容器来说,不需要做内存拷贝和内存移动。说对了,确实如此。set容器内所有元素都是以节点的方式来存储,其节点结构和链表差不多,指向父节点和子节点。

map和set都有自己的count函数和find函数,可以直接调用。找不到时,指针指向map.end()。

    m1.insert(make_pair(4,"asf"));//插入
    m1.erase(4);//删除key为4对应的value
    m1.insert(make_pair(4,"asf"));
    map<int,string>::iterator key  = m1.find(4);//查找、若找到则删除
    m1.erase(key);//迭代器删除
    m1.count(1);//统计key=1的次数

 map根据value排序

        vector< pair<int,int> > vec(m.begin(),m.end());
        sort(vec.begin(), vec.end(),[](const pair<int,int> &p1, const pair<int,int> &p2)
        {
            return p1.second > p2.second;
        });

  

posted on 2020-12-17 20:25  我不上网了  阅读(134)  评论(0编辑  收藏  举报

导航