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