谈谈C++学习之Pair的使用方法

 更新时间:2016年12月21日 11:10:07   作者:OceanLight  
pair是一种模板类型,其中包含两个数据值,两个数据的类型可以不同,本篇详细的介绍了Pair的使用方法和实例,有兴趣的同学可以了解一下。

一、Pair类型概述

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

pair<int, string> a;

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

pair<string, string> a("James", "Joy");

也可以像上面一样在定义的时候直接对其初始化。

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

typedef pair<string, string> author;
author pro("May", "Lily");
author joye("James", "Joyce");

Pair对象的操作

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

pair<string, string> a("Lily", "Poly"); 
string name;
name = pair.second;

2、生成新的pair对象

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

int a = 8;
string m = "James";
pair<int, string> newone;
newone = make_pair(a, m);

三、编程实践

练习:编写程序读入一系列string和int型数据,将每一组存储在一个pair对象中,然后将这些pair对象存储在vector容器

#include<iostream>
#include<string>
#include<vector>
#include<utility>
using namespace std;

int main()
{
  pair<string, int>p;
  typedef vector< pair<string, int> > VP;
  VP vp;
  while(cin>>p.first>>p.second)
  {
    vp.push_back(make_pair(p.first,p.second));
    
  }
  VP::iterator it;
  for(it=vp.begin(); it!=vp.end(); it++)
    cout<<it->first<<","<<it->second<<endl;

  return 0;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 利用C语言实现将格式化数据和字符串相互转换

    利用C语言实现将格式化数据和字符串相互转换

    这篇文章主要为大家详细介绍了2个函数,分别是sprintf和sscanf,可以用来实现将格式化数据和字符串相互转换,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-03-03
  • C语言字符串大小比较

    C语言字符串大小比较

    本文给大家分享给大家的是C语言的字符串大小比较的函数,有需要的小伙伴可以参考下。
    2015-07-07
  • 用C语言实现五子棋游戏

    用C语言实现五子棋游戏

    这篇文章主要为大家详细介绍了用C语言实现五子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • 利用C++实现从std::string类型到bool型的转换

    利用C++实现从std::string类型到bool型的转换

    利用C++实现从std::string类型到bool型的转换。需要的朋友可以过来参考下。希望对大家有所帮助
    2013-10-10
  • C++用一棵红黑树同时封装出set与map的实现代码

    C++用一棵红黑树同时封装出set与map的实现代码

    set中存储的一般为键K即可,而map存储的一般都是键值对KV,也就是说他们结构是不同的,那么我们如何才能用一颗红黑树同时封装出set与map两种容器呢,那么接下来我们具体地来研究下STL库中是怎样实现的,并且进行模拟实现,需要的朋友可以参考下
    2024-03-03
  • 详解C++ 指针与二维数组名

    详解C++ 指针与二维数组名

    和一维数组类似,C++ 将二维数组名解释为其第一个元素的地址,而二维数组的第一个元素为一维数组,下面详细总结下二维数组名的性质,需要的朋友可以参考下
    2022-09-09
  • 关于python调用c++动态库dll时的参数传递问题

    关于python调用c++动态库dll时的参数传递问题

    这篇文章主要介绍了python调用c++动态库dll时的参数传递,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • C++ Boost Xpressive示例分析使用

    C++ Boost Xpressive示例分析使用

    Boost是为C++语言标准库提供扩展的一些C++程序库的总称。Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一,是为C++语言标准库提供扩展的一些C++程序库的总称
    2022-11-11
  • C语言实现通讯录的八种功能(添加、删除、查找、修改、显示、排序、退出、清空)

    C语言实现通讯录的八种功能(添加、删除、查找、修改、显示、排序、退出、清空)

    本文主要介绍了C语言实现通讯录的八种功能,主要包括添加、删除、查找、修改、显示、排序、退出、清空,感兴趣的可以了解一下
    2023-09-09
  • c语言中形参与实参的关系解读

    c语言中形参与实参的关系解读

    这篇文章主要介绍了c语言中形参与实参的关系,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07

最新评论