<font color=#FF0000 size=3 face="黑体">《算法笔记》学习笔记</font>ios
//pair是一个很实用的”小玩意“,当想要将两个元素绑在一块儿做为一个合成元素, //又不想所以定义结构体时,使用pair能够很方便地做为一个替代品。 //也就是说,pair实际上能够看做一个内部有两个元素地结构体, //且这两个元素的类型是能够指定的。 struct pair { typename1 first; typename2 second; };
//要使用pair,应先添加头文件#include <utility>,并在头文件下面加上"using namespace std" //注意:因为map的内部实现中涉及pair,所以添加map头文件时会自动添加utility头文件 //此时若是须要使用pair,就不须要额外再添加utility头文件 //pair有两个参数,分别对应first和second的数据类型,它们能够是任意基本数据类型或容器 //定义 pair<typeName1, typeName2> name; //定义参数为string和int类型的pair pair<string, int> p; //初始化 pair<string, int> p("haha", 5); //临时构建一个pair,有两种方法 //<1> 将类型定义写在前面,后面用小括号内两个元素的方式 pair<string, int> ("haha", 5) //<2> 使用自带的make_pair函数 make_pair("haha", 5)
//pair中有两个元素,分别是first和second,只须要按正常结构体的方式去访问便可。 #include <iostream> #include <utility> #include <string> using namespace std; int main() { pair<string, int> p; p.first = "haha"; p.second = 5; cout << p.first << " " << p.second << endl; p = make_pair("xixi", 55); cout << p.first << " " << p.second << endl; p = pair<string, int>("heihei", 555); cout << p.first << " " << p.second << endl; return 0; }
比较操做数算法
//两个pair类型数据能够直接使用 ==, !=, <, <=, >, >= 比较大小,比较规则先以first的大小做为标准 //只有当first相等时才去判别second的大小 #include <cstdio> #incldue <utility> using namespace std; int main() { pair<int, int> p1(5, 10); pair<int, int> p2(5, 15); pair<int, int> p3(10, 5); if(p1 < p3) printf("p1 < p3\n"); if(p1 <= p3) printf("p1 <= p3\n"); if(p1 < p2) printf("p1 < p2\n"); return 0; }
#include <iostream> #include <string> #include <map> using namespace std; int main() { map<string, int> mp; mp.insert(make_pair("heihei", 5)); mp.insert(pair<string, int>("haha", 10)); for(map<string, int>::iterator it = mp.begin(); it != mp.end(); it++) { cout << it -> first << " " << it -> second << endl; } return 0; }