STL的
pair模板类需要两个参数:首元素的数据类型和尾元素的数据类型。pair模板类对象有两个成员:first和second,分别表示首元素和尾元素。
在
// map/pair-test.cpp - Show basic use of pair.
#include
#include
#include
#include
除了直接定义一个pair对象外,如果需要即时生成一个pair对象,也可以调用在
// Illustrates how to use the make_pair function.
// Functions: make_pair - creates an object pair containing two data
// elements of any type.
#include
#include
using namespace std;
/* STL pair data type containing int and float
*/
typedef struct pair PAIR_IF;
int main(void)
{
PAIR_IF pair1=make_pair(18,3.14f);
cout << pair1.first << " " << pair1.second << endl;
pair1.first=10;
pair1.second=1.0f;
cout << pair1.first << " " << pair1.second << endl;
}
pair是将2个数据组合成一个数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存(说简单点就是映射)。另一个应用是,当一个函数需要返回2个数据的时候,可以选择pair。 简而言之pair就是结构体,主要的两个成员变量是first second 因为是使用struct不是class,所以可以直接使用pair的成员变量。
make_pair都使用在需要pair做参数的位置,可以直接调用make_pair生成pair对象很方便。
1. 利用make_pair进行赋值运算!!!
pair
p1 = make_pair(1, 1.2);
2. pair可以接受隐式的类型转换,这样可以获得更高的灵活度。灵活度也带来了一些问题!!!
std::pair
std::make_pair(1, 1.1);
是不同的,第一个就是float,而第2个会自己匹配成double。
3. make_pair创建声明 和 初始化 和 构造方法:
pair
pair
以上全部调用pair类型的默认构造函数对其成员进行数值初始化,成员初始化为make_pair
也能在定义时提供初始化式:
构造方法:
pair
pair
pair
4. 创建与赋值小结代码:
#include
#include
#include
using namespace std;
pair p;
int main()
{
string str = "直接复制也可以";
int m =19;
// cin>>p.first>>p.second; 法一
// p.first=str;p.second=m; 法二
p = make_pair("ghgfhgfh",m);//法三
cout<
举个例子:map是一个关联容器,里面存放映射,
容器中每一元素都是pair类型,通过map的insert()方法来插入元素(pair类型)。
在vector中的使用:
#include
#include
#include
#include
#include
using namespace std;
bool strict_weak_ordering(paira,pairb)
{ return a.first < b.first; }
int main()
{
vector > vec;
vec.push_back(make_pair(5, "heo"));
vec.push_back(make_pair(4, "hell"));
vec.push_back(make_pair(6, "hlo,"));
sort(vec.begin(), vec.end(), strict_weak_ordering);
vector >::iterator it = vec.begin(), end = vec.end();
for(;it != end; ++it)
cout<second<
利用vector存储piar类型,并通过sort对各pair类型数据的begin()排序,
最后借助迭代器输出pair类型数据的second().