当我们使用迭代器时,我们先声明迭代器,然后将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/