STL的pair

Pair类型概述

pair是一种模板类型,其中包含两个数据值,两个数据的类型可以不同,基本的定义如下:

pair<int, string> a;

表示a中有两个类型,第一个元素是int型的,第二个元素是string类型的,如果创建pair的时候没有对其进行初始化,则调用默认构造函数对其初始化。

pair赋值的方法:

1)创建时初始化:pair<string,double> fruit1("orange",4.5);//初始化

2)跟结构体赋值一样进行赋值:

pair<string,double> fruit2;

//结构体初始化

fruit2.first="banana";

fruit2.second=3.25;

3)利用make_pair模板函数(加头文件#include<utility>):

pair<string,double> fruit3;

fruit3=make_pair("apple",5.2);

//结构体初始化

fruit2.first="banana";

fruit2.second=3.25;

另外:

由于pair类型的使用比较繁琐,因为如果要定义多个形同的pair类型的时候,可以时候typedef简化声明:

typedef pair<string, string> author;

author pro("May", "Lily");

author joye("James", "Joyce");

Pair对象的操作

  • 对于pair类,由于它只有两个元素,分别名为first和second,因此直接使用普通的点操作符即可访问其成员

pair<string,
string> a("Lily", "Poly");

string name;

name
= pair.second;

  • 生成新的pair对象

可以使用make_pair对已存在的两个数据构造一个新的pair类型:

int a = 8;

string m = "James";

pair<int, string> newone;

newone = make_pair(a, m);

#include<iostream>
#include<utility>//<utility>中定义了模板函数make_pair
#include<string>
using namespace std;
void  main()
{
	pair<string,double> fruit1("orange",4.5);//初始化
	pair<string,double> fruit2;
	pair<string,double> fruit3;

	//结构体初始化
	fruit2.first="banana";
	fruit2.second=3.25;

	//使用模板函数给pair结构体赋值
	fruit3=make_pair("apple",5.2);
	cout<<"pair:"<<endl;
	cout<<"The price of "<<fruit1.first<<" is $"<<fruit1.second<<endl;
	cout<<"The price of "<<fruit2.first<<" is $"<<fruit2.second<<endl;
	cout<<"The price of "<<fruit3.first<<" is $"<<fruit3.second<<endl;
}

其运行结果如下:

pair  和  make_pair比较:

make_pair constructs a pair object.

template

pair make_pair(T1 x, T2 y)

{

return pair(x, y);

}

eg:  std::pair("sn001", 12.5);

std::make_pair("sn001", 12.5);

两者效果一样。

倘若:std::pair("sn002", 12.6);   // 12.6‘s datatype is float

std::make_pair("sn002",12.6);  // 12.6‘s datatype is double

使用:

std::pair m_pairA;

m_pairA = std::make_pair("sn001", 12.5);

std::cout<<m_pairA.first<<"  "<<m_pairA.second<<std::endl;

结合map的简单使用(map中的元素类型为pair):

std::pair m_pairA;

m_pairA = std::make_pair("sn001", 12.5);

//std::cout<<m_pairA.first<<"  "<<m_pairA.second<<std::endl;

std::map m_mapA;

m_mapA.insert(m_pairA);

std::map::iterator iter = m_mapA.begin();

std::cout<<iter->first<<"  "<<iter->second<<std::endl;

小结:

  make_pair创建的是一个pair对象。使用都很方便,针对成对出现的数据,如书的ISBN对应一个书名。

  pair是单个数据对的操作,pair是一struct类型,有两个成员变量,通过first,second来访问,用的是“.”访问。

  map是一个关联容器,里面存放的是键值对,容器中每一元素都是pair类型,通过map的insert()方法来插入元素(pair类型),使用迭代器,取值用“->”。

部分内容参考:http://blog.csdn.net/wangran51/article/details/8853565

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-16 00:21:52

STL的pair的相关文章

STL std::pair基本用法

std::pair 是一个结构体模板,其可于一个单元内存储两个相异对象.是 std::tuple 的拥有两个元素的特殊情况. 一般来说,pair 可以封装任意类型的对象,可以生成各种不同的 std::pair<T1, T2> 对象,可以是数组对象或者包含 std::pair<T1,T2> 的 vector 容器.pair 还可以封装两个序列容器或两个序列容器的指针. 1. 定义 #include <utility> template<class T1, class

STL之pair及其非成员函数make_pair()

std::pair是一个结构模板,提供了一种将两个异构对象存储为一个单元的方法. 定义于头文件 <utility> template< class T1, class T2 > struct pair; 成员类型 Definition   成员对象 Type first_type T1         First T1 second_type T2   Second T2 1.定义(构造): pair<int, double> p1; //使用默认构造函数 pair&l

STL之pair类型具体分析

pair定义于头文件utility中.基本的作用是将两个数据组合成一个数据,两个数据能够是同一类型或者不同类型. pair类型提供的操作: pair<T1,T2> p1; pair<T1,T2> p1(v1,v2); make_pair(v1,v2); p1 < p2; p1 == p2; p.first; p.second; 创建和初始化: pair<string,string> name; pair<string,vector<int>>

STL的pair学习

http://blog.csdn.net/calvin_zcx/article/details/6072286 http://www.linuxidc.com/Linux/2014-10/107621.htm 头文件  : <utility> pair 的  <.>.<=.>=.==.!= 的比较规则  :  先比较first,first相等时再比较second   (可以通过重载这几个运算符来重新指定自己的比较逻辑) pair的初始化:   pair<strin

STL之pair类型详细分析

pair定义于头文件utility中,主要的作用是将两个数据组合成一个数据,两个数据可以是同一类型或者不同类型. pair类型提供的操作: pair<T1,T2> p1; pair<T1,T2> p1(v1,v2); make_pair(v1,v2); p1 < p2; p1 == p2; p.first; p.second; 1.创建和初始化: pair<string,string> name; pair<string,vector<int>&

STL(pair map set vector priority_queue) poj 3297

POJ 3297 算法竞赛初级杂烩包 题意:学生选课,没个学生只能选一门课.大写字符是课的名字,小写是人名.如果课程后面有多个相同名字算一个,如果一个人选多门课,则他选不上课,输出课和每门课选课人数 思路: map<string,set<int> > stu:一个学生名对应他选了哪几门课 map<string,ser<int> > pro:课程名对应有几个学生选了他,set存对应的学生 vector<pair<int,string> >

STL之pair对组

1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 #include<cstdlib> 5 using namespace std; 6 7 //创建对组 8 void test01(){ 9 /*方法一:*/ 10 pair<int,int> pair1(10,20); 11 cout<<pair1.first<<" "&l

STL之pair类型

C++ pair 类型 ---心怀虔诚,细细欣赏! 编程实践: Practice:编写程序读入一系列string和int型数据,将每一组存储在一个pair对象中,然后将这些pair对象存储在vector容器 1 #include<bits/stdc++.h> 2 using namespace std; 3 int main() 4 { 5 pair<string,int> p; 6 typedef vector< pair<string,int> > VP

【C++】pair

STL的pair,有两个值,可以是不同的类型. template <class T1, class T2> struct pair; 注意,pair在头文件utility中,不要include.(一个错误是 include <pair>) 成员类型 first_type first的类型 second_type second的类型 成员变量 first 第一个值 second 第二个值 成员函数 构造函数   pair:: operator =   pair:: swap