2011-02-02 110 views
2

爲什麼在使用C++的迭代器聲明中是必要的範圍運算符「::」範圍運算符和迭代器

std::vector<int>::iterator i; 
+0

因爲`iterator`是特別的矢量的類型。如果不是,我們怎麼知道'* i`返回了什麼? – Marlon 2011-02-02 01:27:13

回答

3

因爲iterator在全球範圍內沒有定義,它在std::vector<int>類中定義的類型。

這也意味着,你可以有更多的類在不同的範圍命名iterator,例如std::list<...>::iteratorstd::set<...>::iteratorstd::map<...>::iterator等;所有這些都是不同的類,所有名稱均爲iterator,但每個類都定義在不同的類中。

+1

這也意味着你可以參考迭代器的類型參數,假設遵循這個約定。例如:`T :: iterator` – 2011-02-02 01:24:51

1

迭代器是在類STD一個typedef ::矢量<>