STL - 为什么使用范围解析运算符作为迭代器

时间:2013-11-26 15:44:27

标签: c++ stl

要访问STL迭代器,为什么我需要范围解析运算符,而不是点运算符?是因为迭代器是静态的,并且不属于特定的类实例吗?

vector<int>::iterator my_iterator;

而不是

vector<int> numbers;
numbers.iterator;

2 个答案:

答案 0 :(得分:10)

点和箭头(->)运算符用于访问特定于给定实例的所有数据(成员变量,函数)。

范围解析运算符用于访问特定于给定类型的所有数据(静态成员变量,静态函数,类型),而不是实例。请注意,成员类型从不是特定于实例的,因此您始终可以使用type::member_type来访问它们。

答案 1 :(得分:1)

a::b命名一个类型; a.b引用变量。在您的示例中,my_iterator是变量的名称,vector<int>::iterator是其类型。