为什么我们在迭代器之前放置范围解析运算符,而我们在得分之前不使用范围解析运算符?
std::vector<double> scores;
std::vector<double>::iterator pv;
答案 0 :(得分:1)
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;
答案 1 :(得分:0)
你专注于错误的部分。第一个语句定义了一个名为scores
的对象。第二个语句定义了一个名为pv
的对象。这两个名字都没有::
。
vector
是名称空间std
中定义的模板的名称,因此称为std::vector
。 iterator
是std::vector<double>
内定义的类型的名称,因此称为std::vector<double>::iterator
。