C++中的pair

pair的类型

pair 是 一种模版类型。每个pair 可以存储两个值。这两种值无限制。也可以将自己写的struct的对象放进去。。

pair<string,int> p;

pair<int ,int > p;

pair<double,int> p;

都可以。。。

应用:如果一个函数有两个返回值 的话,如果是相同类型,就可以用数组返回,如果是不同类型,就可以自己写个struct ,但为了方便就可以使用 c++  自带的pair ,返回一个pair,其中带有两个值。除了返回值的应用,在一个对象有多个属性的时候 ,一般自己写一个struct ,如果就是两个属性的话,就可以用pair 进行操作。。。

应用pair 可以省的自己写一个struct 。。。如果有三个属性的话,其实也是可以用的pair 的 ,极端的写法 pair <int ,pair<int ,int > >

写法极端。(后边的两个 > > 要有空格,否则就会是 >>  位移运算符)

makr_pair:

pair<int ,int >p (5,6);

pair<int ,int > p1= make_pair(5,6);

pair<string,double> p2 ("aa",5.0);

pair <string ,double> p3 = make_pair("aa",5.0);

有这两种写法来生成一个pair。

如何取得pair的值呢。。

每个pair 都有两个属性值  first  和second

cout<<p1.first<<p1.second;

注意是属性值而不是方法。

[cpp] view plain copy

  1. template <class T1, class T2> struct pair
  2. {
  3. typedef T1 first_type;
  4. typedef T2 second_type;
  5. T1 first;
  6. T2 second;
  7. pair() : first(T1()), second(T2()) {}
  8. pair(const T1& x, const T2& y) : first(x), second(y) {}
  9. template <class U, class V>
  10. pair (const pair<U,V> &p) : first(p.first), second(p.second) { }
  11. }

(补充:以下是网上搜的)

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

typedef pair<string, string> author;

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

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

时间: 2024-12-15 19:21:07

C++中的pair的相关文章

C++中的pair,make_pair学习

std::pair主要的作用是将两个数据组合成一个数据,两个数据可以是同一类型或者不同类型.例如std::pair<int,float> 或者 std::pair<double,double>等.pair实质上是一个结构体,其主要的两个成员变量是first和second,这两个变量可以直接使用.初始化一个pair可以使用构造函数,也可以使用std::make_pair函数,make_pair函数的定义如下: template pair make_pair(T1 a, T2 b) {

c++map按value排序--将map的pair对保存到vector中,然后写比较仿函数+sort完成排序过程。

map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value.假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区分),我们用map来进行存储就是个不错的选择. 我们这样定义,map<string, int>,其中学生姓名用string类型,作为Key:该学生的成绩用int类型,作为value.这样一来,我们可以根据学生姓名快速的查找到他的成绩. 但是,我们除了希望能够查询某个学生的成绩,或许还想看看整体的情况.我们想把所有同学和他

Gym - 100989D 题学习stl中的set&lt;pair&lt;int ,int &gt; &gt;

题目网址链接:https://vjudge.net/problem/387095/origin 题目大意:给出桌子数和桌子容纳人数,给出几条操作,操作如下:给出顾客人数,问是否有能容纳顾客且桌子标号和桌子容纳人数与顾客人数差值同时最小的桌子,有即输出桌子编号,没有输出-1:期间会有顾客离开,给出离开的桌子编号. 在做题之前,先学习STL中的set:以集合形式从小到大排列set中的元素. 先给出几个大牛博客链接: https://www.cnblogs.com/zyxStar/p/4542835.

C++ STL中Map的按Key排序和按Value排序

原文  http://blog.csdn.net/iicy266/article/details/11906189 map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value.假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区分),我们用map来进行存储就是个不错的选择. 我们这样定义,map<string, int>,其中学生姓名用string类型,作为Key:该学生的成绩用int类型,作为value.这样一来,我们可以根据学

C++ STL中Map的按Value排序

那么我们如何实现对pair按value进行比较呢? 第一种:是最原始的方法,写一个比较函数:  第二种:刚才用到了,写一个函数对象.这两种方式实现起来都比较简单. typedef pair<string, int> PAIR; bool cmp_by_value(const PAIR& lhs, const PAIR& rhs) { return lhs.second < rhs.second; } struct CmpByValue { bool operator()(

pair的例子

11.12 编写程序,读入string和int的序列,将每个string和int存入一个pair中,pair保存在一个vector中. #include<iostream> #include<vector> #include<utility> #include<string> using namespace std; int main() { vector<pair<string,int>> vec; string str; int

C++中map的用法

map的特性是,所有元素都会根据元素的减值自动被排序.map的所有元素都是pair,同时拥有实值(value)和键值(key).pair的第一个元素会被视为键值,第二个元素会被视为实值.map不允许两个元素拥有相同的键值. 下面看一下<stl_pair.h>中的pair定义: template <class T1, class T2> struct pair{ typedef T1 first_type; typedef T2 second_type; T1 first;//注意,

【转】Android开发中让你省时省力的方法、类、接口

http://www.toutiao.com/i6362292864885457410/?tt_from=mobile_qq&utm_campaign=client_share&app=news_article&utm_source=mobile_qq&iid=6611409663&utm_medium=toutiao_android getParent().requestDisallowInterceptTouchEvent(true); 解释:一次点击事件是从父

4.1 pair类模板

在学习关联容器之前,首先先要了解一下STL中的pair类模板,因为关联容器的一些成员函数返回值都是pair对象,而且map 和multimap中的元素都是pair对象. 1)pair类模板定义 pair实例化出来以后的类都有两个成员变量,一个是first,另一个是second. STL中还有一个make_pair()函数模板,可以返回一个pair模板对象.源码如下: template<class T1, class T2> pair<T1,T2>make_pair(T1 x, T2