STL容器之map/multimap

2022-10-12  本文已影响0人  二进制人类

构造函数

map<T1, T2> mapTT;//map 默认构造函数:
map(const map &mp);//拷贝构造函数

赋值操作

map& operator=(const map &mp);//重载等号操作符
swap(mp);//交换两个集合容器

大小操作

size();//返回容器中元素的数目
empty();//判断容器是否为空
insert(...); //往容器插入元素,

删除

clear();//删除所有元素
erase(pos);//删除 pos 迭代器所指的元素,返回下一个元素的迭代器。
erase(beg,end);//删除区间[beg,end)的所有元素 ,返回下一个元素的迭代器。
erase(keyElem);//删除容器中 key 为 keyElem 的对组。

查找

find(key);//查找键 key 是否存在,若存在,返回该键的元素的迭代器;/若不存在,返回 map.end();
count(keyElem);//返回容器中 key 为 keyElem 的对组个数。对 map 来说,要么是 0,要么是 1。对 multimap 来说,值可能大于 1。
lower_bound(keyElem);//返回第一个 key>=keyElem 元素的迭代器。
upper_bound(keyElem);//返回第一个 key>keyElem 元素的迭代器。
equal_range(keyElem);//返回容器中 key 与 keyElem 相等的上下限的两个迭代器。

实例

#include <iostream>
#include <map>
using namespace std;
void printMapIntString(map<int,string> &m)
{
    map<int,string>::const_iterator it=m.begin();
    for(;it!=m.end();it++)
    {
        //*it == pair<int,string>
        cout<<(*it).first<<" "<<(*it).second<<endl;
    }
}
int main()
{
    map<int,string> m;
    m.insert(pair<int,string>(10086,"移动"));
    m.insert(make_pair(10010,"联通"));//推荐
    m.insert(map<int, string>::value_type(1000, "电信"));
    m[9527]="阿星";//key值必须存在(或创建新内容)
    
    //cout<<m[2000]<<endl;//会给你创建一个没有实值的键值为2000的内容
    printMapIntString(m);
    
    cout<<m[10010]<<endl;//m[10010]等价于key为10010的实值
    
    map<int,string>::const_iterator ret;
    ret = m.find(10086);
    if(ret != m.end())
    {
        //*ret == pair<int,string>
        cout<<(*ret).first<<" "<<(*ret).second<<endl;
    }
    
    pair< map<int,string>::const_iterator ,map<int,string>::const_iterator  > pr;
    pr = m.equal_range(10010);
    if(pr.first != m.end())
    {
        //*pr.first == pair<int,string>
        cout<<"找到下限:"<<(*pr.first).first<<" "<<(*pr.first).second<<endl;
    }
    if(pr.second != m.end())
    {
        //*pr.first == pair<int,string>
        cout<<"找到上限:"<<(*pr.second).first<<" "<<(*pr.second).second<<endl;
    }
    return 0;
}

multimap

#include <iostream>
#include <map>
using namespace std;

int main()
{
    multimap<int,string> m;
    m.insert(pair<int,string>(10086,"移动"));
    m.insert(make_pair(10000,"联通"));
    m.insert(make_pair(10000, "电信"));
    m.insert(make_pair(9527, "lucy"));
    
    multimap<int,string>::const_iterator it=m.begin();
    for(;it!=m.end();it++)
    {
        //*it == pair<int,string>
        cout<<(*it).first<<" "<<(*it).second<<endl;
    }
    cout<<m.count(10000)<<endl;
    return 0;
}

上一篇下一篇

猜你喜欢

热点阅读