zoukankan      html  css  js  c++  java
  • Pair类模板

    >Pair的实现是一个结构体而不是一个类<

    1、标准头文件 #include<utility> 似乎无需引入该文件,在std命名空间内也有pair类型

    2、格式为:template <class T1, class T2> struct pair;

    在现实情况中我们可以像类似于STL创建新容器一样创建pair也可以直接使用,如下:

    1 pair<int,int> p;
    2 pair<int,int> p(10,20);

    或者是:

    1 map<char,int> m;
    2     m.insert(pair<char,int>('a',10));

    3、访问方式

    对与pair中的两个元素,我们可以使用first和second来进行访问,顾名思义first返回第一个元素,而second返回第二个元素,如:

    1 pair<int,int> p(10,20);
    2     cout<<p.first<<" "<<p.second<<endl;

    4、make_pair:

    函数原型template pair make_pair(T1 a, T2 b) { return pair(a, b); }

    我们可以通过make_pair生成我们的所需要的pair,对于一般的pair而言,我们如果需要对其进行赋值,则需要:

    1 pair<int,int> p;
    2     p.first=10,p.second=20;

    但如果我们使用make_pair方法,则可以变成如下内容:

    1 pair<int,int> p;
    2     p=make_pair(10,20);

    make_pair本身是接受隐式类型转换的,比如定义的是一个int类型,使用make_pair传入一个float类型的参数,make_pair不会报错,而是回自动的进行一个类型转换,将float变为int,这样可以获得更高的灵活度,同时也会有一些小问题。

    5、pair类型实现函数多个返回值

     1 #include<iostream>
     2 #include<string>
     3 #include<utility>
     4   
     5 using namespace std;
     6   
     7 pair<string,int> getClass(int id){
     8     return make_pair("DOTCPP!",id);
     9 }
    10   
    11 int main(int argc,char **argv){
    12     pair<string,int> a;
    13     a=getClass(10);
    14     cout<<a.first<<" "<<a.second<<endl;
    15     return 0;
    16 }

    输出为:DOTCPP! 10

    6、比较方式

    pair有内置的比较方式,对于运算符<的规则是:先比较first元素,当first相等时则比较second元素

    OK

  • 相关阅读:
    数据结构矩阵问题总结
    数据结构:二维ST表
    mysql--时区表问题(Windows环境下)
    mysql--基本命令
    Django2.0--创建缓存表
    git--基本命令
    阿里云主机--重置系统后的登录问题
    链表中倒数第K个结点
    从尾到头打印链表
    替换空格
  • 原文地址:https://www.cnblogs.com/savennist/p/12230243.html
Copyright © 2011-2022 走看看