在学习关联容器之前,首先要了解 STL 中的 pair 类模板,因为关联容器的一些成员函数的返回值是 pair 对象,而且 map 和 multimap 容器中的元素都是 pair 对象。pair 的定义如下:

template <class_Tl, class_T2>
struct pair
{_T1 first;_T2 second;pair(): first(), second() {}  //用无参构造函数初始化 first 和 secondpair(const _T1 &__a, const _T2 &__b): first(__a), second(__b) {}template <class_U1, class_U2>pair(const pair <_U1, _U2> &__p): first(__p.first), second(__p.second) {}
};

pair实例化出来的类都有两个成员变量,一个是 first, 一个是 second。

STL 中还有一个函数模板 make_pair,其功能是生成一个 pair 模板类对象。make_pair 的源代码如下:

template <class T1, class T2>
pair<T1, T2 > make_pair(T1 x, T2 y)
{return ( pair<T1, T2> (x, y) );
}

下面的程序演示了 pair 和 make_pair 的用法。

#include <iostream>
using namespace std;
int main()
{pair<int,double> p1;cout << p1.first << "," << p1.second << endl; //输出  0,0   pair<string,int> p2("this",20);cout << p2.first << "," << p2.second << endl; //输出  this,20pair<int,int> p3(pair<char,char>('a','b'));cout << p3.first << "," << p3.second << endl; //输出  97,98pair<int,string> p4 = make_pair(200,"hello");cout << p4.first << "," << p4.second << endl; //输出  200,helloreturn 0;
}

pair 模板中的第三个构造函数是函数模板,参数必须是一个 pair 模板类对象的引用。程序中第 9 行的 p3 就是用这个构造函数初始化的。

C++ pair类模板相关推荐

  1. c++ 中pair类模板的用法详解

    pair: 头文件:#include<utility> 类模板:template <class T1, class T2> struct pair 参数:T1是第一个值的数据类 ...

  2. C++17尝鲜:类模板中的模板参数自动推导

    目录 模板参数自动推导 示例 自定义类模板中的应用 Automatic deduction guides(自动推断向导) 模板参数自动推导 在C++17之前,类模板构造器的模板参数是不能像函数模板的模 ...

  3. 类模板(参考《C++ Templates 英文版第二版》)

    类模板(参考<C++ Templates 英文版第二版>) Chapter 1 类模板 与函数相似,类也可以被一个或者多个类型参数化 在这章,我们使用栈作为例子 2.1 类模板stack的 ...

  4. c++面向对象高级编程 学习十一 类模板、函数模板、成员模板

    namespace经验谈: 团队中函数或类的名字可能会冲突,因此使用namespace进行区分. 类模板: template<typename T> 函数模板: template<c ...

  5. C++的类继承与类模板

    类继承是面向对象编程中很重要(也是很难)的内容,其能有效地提高代码复用水平,提高开发的效率. 目录 基本概念 公有继承 私有继承.保护继承 包含 多重继承 类模板 基本概念 继承的种类与特点 C++中 ...

  6. C++学习笔记——类模板

    类模板 类模板的定义和声明 1. 定义 template <typename T> class B {}; 2. 声明 template <typename T> class ...

  7. 一文解决函数模板和类模板(上)

    一,首先看看函数模板和类模板的区别: 1.声明方式不同,以sum(int a,int b)为例 //函数模板 template<tepename T> const T&sum(co ...

  8. C++设计模式由浅入深(二)—— 类模板和函数模板

    二.类和函数模板 C++的模板编程特性是一个又大又复杂的话题,有许多著作专门传授这种特性和技巧.在本书中,我们会用到许多C++中的高级泛型编程特性.那么我们该如何去理解贯穿次数中的这些语言结构呢?本章 ...

  9. C++ 函数模板类模板详解

    在 C++ 中,模板分为函数模板和类模板两种.函数模板是用于生成函数的,类模板则是用于生成类的. 函数模板&模板函数     类模板&模板类  必须区分概念 函数模板是模板,模板函数时 ...

最新文章

  1. Linux多线程与同步
  2. 在Eclipse中高效运行HTTP / REST集成测试
  3. mysql语言的创建模式文件_南开17春学期《数据库应用系统设计》在线作业 免费答案...
  4. 2017黑色主题 server sql_王智好美,一袭黑色亮片吊带长裙,造型简约大气,时尚优雅...
  5. 只靠可视化大屏,做不了数字化,阿里总监总结3点,你做到了几个
  6. 中国孩子的micro:bit:TurnipBit自制小乐器教程实例
  7. 《云数据中心构建实战:核心技术、运维管理、安全与高可用》——2.4 云计算的发展历程与未来趋势...
  8. 慧鱼机器人编程18子程序
  9. 微型计算机公众号,《互联网周刊》编辑推荐的40个微信公众号
  10. 国内首个《超融合技术白皮书》出炉,新华三携手产业联盟成员推动全新生态建设
  11. 最有价值证书——ITIL名列第三
  12. 积微——荀子《强国篇》,给每个职场人士推荐
  13. 计算机用户文件内存,win7用户文件夹太大占用大量内存空间怎么清除?
  14. 苹果使用过程中的小技巧(合集)
  15. Python3【pyecharts 0.5.11】pyecharts图表生成总结
  16. 深度剖析TCP三次握手,面试官拍案叫绝
  17. 红米note2能刷机没显示无服务器,红米Note2刷机之后一直停留在开机界面修复教程...
  18. 视频去水印工具-免费视频去水印哪个软件好用
  19. 网络规划设计师怎么样
  20. 基于元胞自动机的人员疏散模拟器研究(Matlab代码实现)

热门文章

  1. docker privileged作用_docker总结
  2. wampserver php扩展openssl 不可用_PHP基础及WAMP集成基础
  3. sqoop mysql parquet_Sqoop抽取Hive Parquet表数据到MySQL异常分析
  4. 泛微OA流程表单验证附加验证条件-js代码块
  5. 软考计算机基础:存储系统
  6. Dubbo是如何进行远程服务调用的?(源码流程跟踪)
  7. Java面试——Spring系列总结
  8. 乌班图配置mysql Java_Ubuntu准备+MySQL+Java
  9. ladder怎么读_ladder 是什么意思_ladder 的翻译_音标_读音_用法_例句_爱词霸在线词典...
  10. 计算机管理档案有什么好处,利用资料管理系统管理档案有什么好处