为什么我们在迭代器之前放置::(范围资源运算符)?

时间:2017-04-13 01:26:20

标签: c++ c++11

为什么我们在迭代器之前放置范围解析运算符,而我们在得分之前不使用范围解析运算符?

std::vector<double> scores;  
std::vector<double>::iterator pv;

2 个答案:

答案 0 :(得分:1)

std是命名空间 std::vectorstd命名空间中的一个类模板,它使std::vector<double>成为一个类 std::vector<T>::iteratorstd::vector<T>下的嵌套类型。

如果要定义std::vector<double>类型的对象,请使用:

std::vector<double> obj;

如果要定义std::vector<double>::iterator类型的对象,请使用:

std::vector<double>::iterator iter;

答案 1 :(得分:0)

你专注于错误的部分。第一个语句定义了一个名为scores的对象。第二个语句定义了一个名为pv的对象。这两个名字都没有::

vector是名称空间std中定义的模板的名称,因此称为std::vectoriteratorstd::vector<double>内定义的类型的名称,因此称为std::vector<double>::iterator