C++复习映射

霸气de小男生 提交于 2020-02-04 19:05:40

映射

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

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!