映射
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