在分配迭代器对象时,在标准模板库中使用C ++运算符“ ::”

时间:2018-08-26 12:37:51

标签: c++

vector <int>::iterator itr1;

我如何解释这一行?

itr1是类iterator的对象,很明显,但是前缀vector <int>::呢?

1 个答案:

答案 0 :(得分:2)

::运算符是Scope Resolution Operator

  

...前缀“ vector ::”呢?

vector<int>::iterator itr1;的上下文中, ::的前缀是iterator属于member typedef 的类。在declaration of class template std::vector内部,看起来像这样:

template <class T, class Allocator = allocator<T> >
class vector {
public:
    // types:
    ...
    typedef ... iterator;
    ...
};

因此,

  

... itr1是类iterator [...]

的对象

将是不正确的。 itr1的类别为std::vector<int>::iterator。只是std::iterator is a different class,不一定与您的代码段无关,因为它可能是std::vector<int>::iterator的基础,但绝对不是同一类。