typedef typename std::vector<T>::size_type size_type;
- c++ premier中多次出现上面的代码,让人看了似曾相识,但是有觉得什么都不是,因为这里包含了好几个知识点,让我来慢慢解答。
1.独立于对象存在的类成员
首先来看这句:
std::vector<T>::size_type
要想知道上面的代码什么意思,当我们看一下STL中vector类是怎么写的就明白啦:
template <class T,class Alloc=alloc>
class vector{
public:
//...
typedef size_t size_type;
//...
};
其实size_type就是size_t(size_t是什么,下面会讲到)。
std::vector<T>::size_type,这种直接用类名加成员的写法,让我想起来了类静态变量,类静态函数的用法。(静态变量,静态函数可以看我关于static的博客)。于是我做了总结;
静态数据成员
静态成员函数
嵌套类型
上面这三种情况,都可以用类名加成员的写法来用, typedef size_t size_type;这句话就是嵌套类型,std::vector<T>::size_type,这句就是引用,显