1. 程式人生 > >C++ pair對組的用法

C++ pair對組的用法

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