2011-02-02 94 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 ::矢量<>