C++ pair對組的用法
阿新 • • 發佈:2018-12-14
C++中的pair對組的本質是一個struct型別的模板,所以它具有struct的特徵,就是可以把不同的資料據型別合成一個結構體型別,不同的是pair只能合成兩種資料型別。
下面是對組的用法,用程式註釋解釋:
#include <iostream> #include <string> #include <map> #include <cstdlib> using namespace std; int main() { //初始化對組方法一,使用建構函式 /* pair建構函式的定義為 _CONST_FUN pair(const _Ty1& _Val1, const _Ty2& _Val2) : first(_Val1), second(_Val2) { // construct from specified values } */ pair<string, int> person(string("name"), 18); //初始化對組方法二,使用make_pair,效果同方法一 /* make_pair原型為 make_pair(_Ty1&& _Val1, _Ty2&& _Val2) { // return pair composed from arguments typedef pair<typename _Unrefwrap<_Ty1>::type, typename _Unrefwrap<_Ty2>::type> _Mypair; return (_Mypair(_STD forward<_Ty1>(_Val1), _STD forward<_Ty2>(_Val2))); } */ class Student { private: string name; int id; int age; public: string show() { return "StudentClass"; } }; Student stu; pair<Student, int> student = make_pair(stu, 18); //輸出對組的元素,第一個元素使用first,第二個元素使用second /* pair的原型是一個結構體模板,first和second是其中兩個變數 template<class _Ty1, class _Ty2> struct pair { // store a pair of values ... _Ty1 first; // the first stored value _Ty2 second; // the second stored value }; */ cout << "person: " << person.first << " " << person.second << endl; cout << "student:" << student.first.show() << " " << student.second << endl; //常使用pair給map插入值 map<string, int> mapPerson; mapPerson.insert(person); //輸出map中的值 for (map<string, int>::iterator iter = mapPerson.begin(); iter != mapPerson.end(); iter++) { cout << "mapPerson:" << iter->first << " " << iter->second << endl; } system("pause"); return 0; }