当我们使用迭代器时,我们先声明迭代器,然后将itr声明为对象,但是我们不会像在每次声明指针变量时那样传递任何指针,而是当我们使用迭代器而不是成为itr
当我们不传递任何指针

指针是隐藏的还是在背景上工作?

像这样的例子:

iterator itr;
*itr


*itr的工作方式意味着迭代器或*的其他任何行为都像普通指针变量一样。

如果它像指针变量一样工作,那为什么在声明*itr时为什么不传递*呢?

最佳答案

它的工作方式*意味着迭代器或* itr的其他任何行为都像普通指针变量一样。


这取决于iterator后面的类型。它可以是指针的别名:

using iterator = int *;
iterator itr;
*itr; // it is pointer dereferencing in this case.


或者它可以是用户定义的类型:

struct iterator {
    int &operator*();
};

iterator itr;
*itr; // it means itr.operator*() here


因此,不知道iterator是什么类型,在这里很难说出*的实际作用。但是实际上,您不必在意,因为库的开发人员应该以对您无关紧要的方式来实现它。

关于c++ - 为什么不在STL的迭代器中传递星号(*),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59553443/

10-11 21:05