STL总结
2007-02-16 05:30
232 查看
模板类 pair 的一个成员模板函数
template <class U1,class U2>
pair(const pair<U1,U2>&x):first(x.first),second(x.second)
如果两个变量都不是常量类型,可以使用make_pair(x,y),来产生一个pair的对象。
对照上面的构造函数来看,其中的x是赋值给x.first,y是赋值给x.second。
x.first是U1类型,x.second是U2类型。x.first和x.second是pair的两个成员对象。
pair模板类的构造函数:
template<class T1,classT2>struct pair
{
typedef T1 first_type;
typedef T2 second_type;
pair():first(T1()),second(T2()){}
pair(const T1&V1,const T2&V2):first(V1),sencond(V2){}
template<class U1,class U2>pair(const pair<U1,U2>):first(x.first),second(x.second){}
T1 first;
T2 second;
};
第一个(默认)构造函数将first初始化为T(),second初始化为U()。
第二个构造函数将first初始化为x,second初始化为y。第三个(模板)
构造函数将first初始化为pr.first,second初始化为pr.second。T和U只需各自提供一个默认构造函数,一个接受单参数的构造函数,以及一个析构函数
make_pair的作用与问题:可以在必要时产生一个pair对象。但不是每次都成功,因为模板函数在检测模板参数时将忽略点所有的const属性(至少他们可以这样做,某些编译器就是这样处理的。)也就是说我们不能依赖make_pair产生一个含有一个和多个常量成员的对象的pair对象。而这些map和multimap有时需要的。
template <class U1,class U2>
pair(const pair<U1,U2>&x):first(x.first),second(x.second)
如果两个变量都不是常量类型,可以使用make_pair(x,y),来产生一个pair的对象。
对照上面的构造函数来看,其中的x是赋值给x.first,y是赋值给x.second。
x.first是U1类型,x.second是U2类型。x.first和x.second是pair的两个成员对象。
pair模板类的构造函数:
template<class T1,classT2>struct pair
{
typedef T1 first_type;
typedef T2 second_type;
pair():first(T1()),second(T2()){}
pair(const T1&V1,const T2&V2):first(V1),sencond(V2){}
template<class U1,class U2>pair(const pair<U1,U2>):first(x.first),second(x.second){}
T1 first;
T2 second;
};
第一个(默认)构造函数将first初始化为T(),second初始化为U()。
第二个构造函数将first初始化为x,second初始化为y。第三个(模板)
构造函数将first初始化为pr.first,second初始化为pr.second。T和U只需各自提供一个默认构造函数,一个接受单参数的构造函数,以及一个析构函数
make_pair的作用与问题:可以在必要时产生一个pair对象。但不是每次都成功,因为模板函数在检测模板参数时将忽略点所有的const属性(至少他们可以这样做,某些编译器就是这样处理的。)也就是说我们不能依赖make_pair产生一个含有一个和多个常量成员的对象的pair对象。而这些map和multimap有时需要的。
相关文章推荐
- C++ STL vector 总结
- smart_stl::deque相关总结
- STL的vector<string>的初始化方式总结
- STL_string用法总结
- STL容器特征总结与迭代器失效
- stl.string使用总结
- STL基础6:list容器的使用总结
- STL学习——STL中的关联式容器总结(RB-tree、set、map、hashtable、hash_set、hash_map)
- 学习总结_STL_优先队列
- C++STL容器使用经验总结
- STL总结之string
- 先简单总结下简单常用的STL底层的实现,后期会挨个给大家解释
- STL顺序容器总结
- STL中的约束器相关总结
- STL——顺序容器使用总结
- STL一般总结
- STL容器总结之list
- STL——顺序容器的总结
- STL源码剖析---STL容器特征总结(含迭代器失效)
- STL操作总结