美文网首页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类模板

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