永发信息网

c++ pair()结构体给我讲下

答案:3  悬赏:70  手机版
解决时间 2021-02-14 08:11
  • 提问者网友:容嬷嬷拿针来
  • 2021-02-13 20:21
template<class _T1, class _T2> struct pair {
typedef _T1 first_type;
typedef _T2 second_type;
pair()
: first(_T1()), second(_T2()) {}
pair(const _T1& _V1, const _T2& _V2)
: first(_V1), second(_V2) {}
template<class U, class V> pair(const pair<U, V> &p)
: first(p.first), second(p.second) {}
_T1 first;
_T2 second;
};

我模板和宏都学过,可是看不太懂这个,感觉和学的不一样,求个高手讲讲
最佳答案
  • 五星知识达人网友:上分大魔王
  • 2021-02-13 20:47
三种构造函数:
基础点:构造函数后面的 冒号后面是对成员函数初始化
1:pair() : first(_T1()), second(_T2()) {} 分别调用T1 T2的默认构造函数产生两个对象初始化first,seconde
2: 其实跟1差不多,只不过用传递到构造函数的_V1,_V2对象初始化成员变量
3:一样的意思。。。
全部回答
  • 1楼网友:独行浪子会拥风
  • 2021-02-13 22:22
// C++中的struct 和class是 一样的,不同的只是默认的访问属性: // struct默认为public,class默认为private。 template<class _T1, class _T2> // 定义结构模板,也就是类模板 struct pair { typedef _T1 first_type; typedef _T2 second_type; pair() : first(_T1()), second(_T2()) {} //默认构造函数:用调用 _T1类的默认构造函数产生的对象(_T1())初始化新建对象的first, 用调用 _T2类的默认构造函数产生的对象(_T2())初始化新建对象的second。 pair(const _T1& _V1, const _T2& _V2) : first(_V1), second(_V2) {} //构造函数:用 _T1类的对象_V1初始化新建对象的first, 用 _T2类的对象_V2初始化新建对象的second。 template<class U, class V> pair(const pair<U, V> &p) : first(p.first), second(p.second) {} //构造函数:该构造函数为函数模板,用模板类(pair<U, V>)对象类初始化新建对象。 _T1 first; //数据成员 _T2 second; //数据成员 };
  • 2楼网友:不如潦草
  • 2021-02-13 21:05
// C++中的struct 和class是 一样的,不同的只是默认的访问属性: // struct默认为public,class默认为private。 template // 定义结构模板,也就是类模板 struct pair { typedef _T1 first_type; typedef _T2 second_type; pair() : first(_T1()), second(_T2()) {} //默认构造函数:用调用 _T1类的默认构造函数产生的对象(_T1())初始化新建对象的first, 用调用 _T2类的默认构造函数产生的对象(_T2())初始化新建对象的second。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯