美文网首页
STL容器之map/multimap

STL容器之map/multimap

作者: 二进制人类 | 来源:发表于2022-10-12 17:19 被阅读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;
    }
    
    

    相关文章

      网友评论

          本文标题:STL容器之map/multimap

          本文链接:https://www.haomeiwen.com/subject/xcaoartx.html