为什么我们在迭代器之前放置范围解析运算符,而在分数之前我们不使用范围解析运算符?为什么我们在迭代器之前放入::(范围resoulation操作符)?
std::vector<double> scores;
std::vector<double>::iterator pv;
为什么我们在迭代器之前放置范围解析运算符,而在分数之前我们不使用范围解析运算符?为什么我们在迭代器之前放入::(范围resoulation操作符)?
std::vector<double> scores;
std::vector<double>::iterator pv;
std
是一个命名空间。
std::vector
是std
命名空间中的类模板,它使得std::vector<double>
成为一个类。
std::vector<T>::iterator
是std::vector<T>
下的嵌套类型。
如果要定义std::vector<double>
类型的对象,请使用:
std::vector<double> obj;
如果要定义std::vector<double>::iterator
类型的对象,请使用:
std::vector<double>::iterator iter;
Vector是类模板在std –
@GuillaumeRacicot,谢谢:)听起来像我需要从计算机休息一下。 –
你关注在错误的部分。第一条语句定义了一个名为scores
的对象。第二条语句定义了一个名为pv
的对象。这两个名字都没有在它前面有一个::
。
vector
是名称空间std
中定义的模板的名称,所以它被称为std::vector
。 iterator
是在std::vector<double>
中定义的类型的名称,因此它被称为std::vector<double>::iterator
。
添加到此:即'std :: vector :: iterator'是'std :: vector'类型的特定迭代器。例如,'std :: list'在'std :: list :: iterator'等等处有一个特定的迭代器。 – JHBonarius
请注意,C和C++是不同的语言 - 只使用相关的语言标记(本例中是C++)。 – kaylum
因为其中之一在需要解决的范围内。 – GManNickG
[为什么C++需要范围解析运算符?](http://stackoverflow.com/questions/9338217/why-does-c-need-the-scope-resolution-operator) –