zoukankan      html  css  js  c++  java
  • C++学习之Pair

    一、Pair类型概述

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

    pair<int, string> a;

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

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

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

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

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

     

    Pair对象的操作

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

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

     

    2、生成新的pair对象

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

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

    三、编程实践

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

     1 #include<iostream>
     2 #include<stdlib.h>
     3 #include<string>
     4 #include<vector>
     5 #include<utility>
     6 using namespace std;
     7 
     8 int main()
     9 {
    10   pair<string, int>p;
    11   typedef vector< pair<string, int> > VP;
    12   VP vp;
    13   while(cin>>p.first>>p.second)
    14   {
    15     vp.push_back(make_pair(p.first,p.second));
    16 
    17   }
    18   VP::iterator it;
    19   for(it=vp.begin(); it!=vp.end(); it++)
    20     cout<<it->first<<","<<it->second<<endl;
    21 
    22     system("pause");
    23   return 0;
    24 }

    运行结果:

  • 相关阅读:
    第3章 神经网络
    OpenCV基础(一)---图像卷积运算
    OpenCV-自定义harris检测
    C++类型转换
    剑指offer之【二叉搜索树与双向链表】
    剑指offer之【复杂链表的复制】
    剑指offer之【二叉树中和为某一值的路径】
    剑指offer之【二叉搜索树的后序遍历序列】
    剑指offer之【从上往下打印二叉树】
    剑指offer之【栈的压入、弹出序列】
  • 原文地址:https://www.cnblogs.com/yxh-amysear/p/8275024.html
Copyright © 2011-2022 走看看