C++复习映射

映射


 

1、pair(头文件<utility>)

  • 创建
  • pair<T1,T2>p;                                    //T1,T2为两种类型
  • pair<T1,T2>p(v1,v2)                          //定义时初始化
  • 赋值
  • typedef pair<string,double> P;
    P p1("Kite",1.2);
    P p2("Tom",3.2);
    P p3;
    p3 = p1; //直接赋值
    p1 == p2; //即p1,p2的第一二个元素对应相等
    p1 < p2; //遵循字典序比较p1和p2的第一二个元素

     

  • pair<int,double>p;
  • p = make_pair(1,1.2);  
  • 访问
  • p.first、p.second分别返回p的第一二个元素
  • pair作为返回值
  • #include<utility>
    #include<iostream>
    using namespace std;
    pair<string,int> f(int a){
        return make_pair("Tom",a);
    }
    int main(){
        string name;
        int grade;
        tie(name,grade) = f(99);
        cout << name << ' ' << grade;
        return 0;
    }

 


2、map(头文件<map>)

  • 创建
  • map<key, value>m;                    //map同样可以用typedef进行简化声明;
  • m.first返回key,m.second返回value
  • 插入
  • m[key] = value
  • m.insert(pair<int,string>(100,"Tom"));
  • m.insert(make_pair(100,"Tom"));
  • 遍历
  • #include<iostream>
    #include<map>
    #include<algorithm>
    using namespace std;
    map<int,string>m;
    int main(){
        m[2] = "Kite";
        m[1] = "Tom";
        m[4] = "Jim";
        m[3] = "Mark";
        for(auto it = m.begin();it != m.end();it++){
            cout << it->first << ':' << it->second << endl;
            //map内部是按照first进行排序的 
            //m.size()返回map的大小 
        }
        return 0;
    } 
  • 查找
  • m[key]如果存在则返回value,若不存在则返回0,字符串返回"";         //不存在时存在查找风险
  • m.count(key),若存在则返回1,否则返回1
  • m.find(key),返回key的迭代器,可用it->second继续访问value,若不存在返回m.end();
  • 删除
  • m.erase(key)        //删除键值为key的元素,返回删除元素的个数
  • m.erase(it)            //删除迭代器it指向的元素
  • m.erase(it1,it2)     //删除迭代器it1与it2之间的元素,不包括it2(注意,map的迭代器不能进行加减,也不能比较,只能++,--)
  • m.clear()               //清空map内的元素
  • m.empty()             //若map为空则返回true,否则返回false

 

原文链接: https://www.cnblogs.com/Cmathe/p/12260219.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    C++复习映射

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/326988

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月1日 下午4:04
下一篇 2023年3月1日 下午4:04

相关推荐