• 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;
            });
    

      

  • 相关阅读:
    HDU 2852 KiKi's K-Number (主席树)
    HDU 2089 不要62
    Light oj 1140 How Many Zeroes?
    Bless You Autocorrect!
    HDU 6201 transaction transaction transaction
    HDU1561 The more ,The better (树形背包Dp)
    CodeForces 607B zuma
    POJ 1651 Mulitiplication Puzzle
    CSUOJ 1952 合并石子
    Uva 1599 Ideal path
  • 原文地址:https://www.cnblogs.com/wobushangwangl/p/14151763.html
Copyright © 2020-2023  润新知