爲什麼我們在迭代器之前放置範圍解析運算符,而在分數之前我們不使用範圍解析運算符?爲什麼我們在迭代器之前放入::(範圍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) –