要访问STL迭代器,为什么我需要范围解析运算符,而不是点运算符?是因为迭代器是静态的,并且不属于特定的类实例吗?
vector<int>::iterator my_iterator;
而不是
vector<int> numbers;
numbers.iterator;
答案 0 :(得分:10)
点和箭头(->
)运算符用于访问特定于给定实例的所有数据(成员变量,函数)。
范围解析运算符用于访问特定于给定类型的所有数据(静态成员变量,静态函数,类型),而不是实例。请注意,成员类型从不是特定于实例的,因此您始终可以使用type::member_type
来访问它们。
答案 1 :(得分:1)
a::b
命名一个类型; a.b
引用变量。在您的示例中,my_iterator
是变量的名称,vector<int>::iterator
是其类型。