美文网首页C++
22. C++ STL pair类模板

22. C++ STL pair类模板

作者: 飞扬code | 来源:发表于2019-04-21 09:22 被阅读42次

在C++关联容器的基础是pair 类模板,我们先了解 STL 中的 pair 类模板,因为关联容器的一些成员函数的返回值是 pair 对象,而且 map 和 multimap 容器中的元素都是 pair 对象。pair 的定义如下:

template <class_Tl, class_T2>
struct pair
{
    _T1 first;
    _T2 second;
    pair(): first(), second() {}  //用无参构造函数初始化 first 和 second
    pair(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,20

    pair<int,int> p3(pair<char,char>('a','b'));
    cout << p3.first << "," << p3.second << endl; //输出  97,98

    pair<int,string> p4 = make_pair(200,"hello");
    cout << p4.first << "," << p4.second << endl; //输出  200,hello

    return 0;
}
image.png

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

相关文章

  • 22. C++ STL pair类模板

    在C++关联容器的基础是pair 类模板,我们先了解 STL 中的 pair 类模板,因为关联容器的一些成员函数的...

  • C++ STL初识及整理

    概述 简介 简单介绍:C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些...

  • STL容器 算法 迭代器 适配器

    STL包括容器,算法和迭代器 STL的模板类为c++提供了完善的数据结构,它的模板类的样式就好象数据结构中用类c或...

  • C++进阶-STL容器,你看我就够了

    STL(标准模板库),是目前C++内置支持的library。它的底层利用了C++类模板和函数模板的机制,由三大部分...

  • 模板特化

    模板是C++泛型编程编程的基础,STL从头到尾都是模板泛型编程 函数模板 类模板 几个需要注意的点1. 类模板的和...

  • 【C++】C++问题——类模板分离编译、函数对象、智能指针

    C++类模板的分离编译 过去很多类模板都是整个类连同实现都放在一个头文件里,像STL库就是遵循这样的策略来实现类模...

  • STL之参考文献

    C++标准库是离不开模板的,STL占了C++标准库80%以上。 学习STL(c++ 98)的主要参考: gcc 3...

  • C++入门系列博客五 C++ STL

    C++ 标准模板库(STL) 作者:AceTan,转载请标明出处! 0x00 何为STL## STL(Standa...

  • C++ STL(1)

    C++ STL(1) from my csdn blog C++标准模板库 容器C++标准模板库提供了10种容器基...

  • c++ STL

    一.STL: standard template library(C++标准模板库) STL共有六大组件:容器、算...

网友评论

    本文标题:22. C++ STL pair类模板

    本文链接:https://www.haomeiwen.com/subject/vfddgqtx.html