• stl.pair用法总结


    0 -- 内部类型定义
    template <class T1, class T2>
    struct pair
    {
        typedef T1 first_type;
        typedef T2 second_type;
        T1 first;
        T2 second;
        pair() : first(T1()), second(T2()) {}
        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) {}
    };
    
    typedef T1 first_type first值域的元素类型
    typedef T2 second_type second值域的元素类型
    1 -- 构造函数
    pair()

    默认构造函数,要求T1和T2有默认的构造函数,并同时使用二者默认构造函数来构造容器。
    pair(const T1 & a, const T2 & b)

    构造pair。容器的first和second元素,分别使用a和b进行构造。
    template <class U1, class U2> pair(const pair<u1, u2=""> & p)

    构造pair。容器的first和second元素分别使用p.first和p.second进行构造。
    2 -- 元素值访问

    从pair的定义可知,它是个结构体。所以我们要访问pair容器的值。
    只需要直接引用p.first,指代第一个元素;直接引用p.second,指代第二个元素。

    3 -- 容器比较函数
    template <class T1, class T2>
    inline bool operator < (const pair<T1, T2> & x, const pair<T1, T2> & y)

    判断容器x是否小于y。该操作先判断x.first < y.first的关系,然后再判断x.second < y.second的关系。所以特别需要注意的是:T1和T2必须支持“<”操作符,否则编译报错。
    template <class T1, class T2>
    inline bool operator == (const pair<T1, T2> & x, const pair<T1, T2> & y)


    判断容器x是否小于y。该操作先判断x.first == y.first的关系,然后再判断x.second == y.second的关系。所以特别需要注意的是:T1和T2必须支持“==”操作符,否则编译报错。
    4 -- 容器赋值函数
    std::set<T1, T2> x;
    x.first  = ....; //给first元素赋值
    x.second = ....; //给second元素赋值
                
    最简单的赋值方法就是声明变量后,分别引用first和second对其赋值。
    template <class T1, class T2>
    inline pair<T1, T2> make_pair(const T1 & x, const T2 & y)

    该函数是个全局函数,非成员函数。等价于pair<t1, t2="">(x, y),用来生成一个pair变量。我们可以这么使用:
    std::set<int, int> a = std::make_pair(1, 2);
  • 相关阅读:
    HDU4341 Gold miner 分组背包
    卡特兰数
    欧拉函数
    求一个阶乘数尾零的个数
    线性时间 筛素数,求前n个数的欧拉函数值,求前n个数的约数个数
    HDU4335 What is N? 欧拉函数,欧拉定理
    HDU4336 Card Collector 容斥定理 Or 概率DP
    ie8恶心的bug4个小时的教训
    39个超实用jQuery实例应用特效
    ECSHOP 模板结构说明
  • 原文地址:https://www.cnblogs.com/motadou/p/1617279.html
Copyright © 2020-2023  润新知