c++ pair(对组) 的用法
以下内容主要来自《c++标准程序库》和网上资料:
pair是将2个数据组合成一个数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和 value放在一起来保存。另一个应用是,当一个函数需要返回2个数据的时候,可以选择pair。 pair的实现是一个结构体,主要的两个成员变量是first second 因为是使用struct不是class,所以可以直接使用pair的成员变量。
1. pair对组定义于 <utility>
tempate <class T1,class T2>
struct pair {
typedef T1 first_type;
typedef T2 second_type;
T1 first ;
T2 second;
pair():first(T1()),second(T2()){}
pair(const T1 & a, const T2 &b):first(a),second(b) {}
template <class U,class V>
pair (const pair(U,V)& p):first(p.first),second(p.second){}
};
2 . Pair之间的比较:
两个Pair相互比较时,第一元素具有较高的优先级。
template <class T1,class T2>
bool operator == (const pair<T1,T2>& x, const pair<T1,T2>)
{
return (x.first ==y.first) && (s.second ==y.second);
}
如果两个pair的第一元素不相等,其比较结果就成为整个比较行为的结果。如果第一元素相等,才继续比较第二元素。
template <class T1,class T2>
bool operator < (const pair<T1,T2>& x, const pair<T1,T2>& y)
{
return (x.first <y.first) || (!(y.first < x.first) && x.second < y.second)
}
bool operator > (const pair<T1,T2>& x, const pair<T1,T2>& y)
{
return (x.first >y.first) || (!(y.first > x.first) && x.second > y.second)
}
3. 便捷函数make_pair()
template <class T1,class T2>
pair<T1,T2> make_pair(const T1& x, const T2& y)
{
return pair<T1,T2>(x,y);
}
template函数make_pair()使你无需写出型别,就可以生成一个pair对象:
例如:
make_pair(100,"hun");
而不必费力的写:
pair<int, string> (100,"hun");
4.Pair的实例应用:
实例1:
#include <iostream>
#include <utility>
using namespace std;
int main()
{
pair <int,string> phone(1882640,"Cking");
pair <string,double> price("fish",10);
pair <string,int> pr1;
pair <char,int> pr2;
pair<string,int> pr3;
pr1.first ="cx",
pr1.second =200000;
pr2=make_pair('#',100);
pr3=pair<string,int>("pair",3);
cout <<"phone:" <<phone.first <<", "<<phone.second <<endl;
cout <<"price:" <<price.first <<", "<<price.second <<endl;
cout <<"pr1:" <<pr1.first <<", " << pr1.second <<endl;
cout <<"pr2:" <<pr2.first <<", " <<pr2.second <<endl;
cout <<"pr3:" <<pr3.first <<", " <<pr3.second <<endl;
return 0;
}
浙公网安备 33010602011771号