value_type 是用来表示迭代器所指对象的类别的。
STL源码剖析中的栗子:
template<class T>
class list{
public:
typedef T value_type;
//……
};
里面的value_type实际就是传入模板的类型,见以下栗子,说明它能够很好的返回模板类型。
#include <list>
#include <vector>
#include <iostream>
using namespace std;
class C{
public:
C(int x){
cout << x << endl;
}
C(){
cout << 10 << endl;
}
};
void main(){
vector<C> vec;
C c1,c2(11);
vec.push_back(c1);
vec.push_back(c2);
vector<C>::value_type n1; // 这里的vector<C>::value_type实际就是C
vector<C>::value_type n2(13);
vec.push_back(n1);
vec.push_back(n2);
cout << vec.size() << endl;
}
那么上述结果就是:
10
11
10
13
4
总结来说,也就是不用管n1 和 n2 是什么类型的,他就是和vector<C>
里面类型相同。