C ++取消引用指向迭代器的指针

c++ dereference a pointer to an iterator

此问题与 Whosebug 上的另一个问题相关。

下面的c++代码中*input_是迭代器还是指向迭代器的指针?

所以node_insert()returns一个迭代器并将它赋值给*input_。这让我认为 *input_ 不是指向迭代器的指针,因为如何将迭代器分配给指向迭代器的指针。

此时迭代器指向图形容器中的一个元素。这是正确的吗?

(*input_) 是否取消引用迭代器(或指向迭代器的指针)?

我不明白为什么要在迭代器周围使用大括号来调用方法 setOutputTensor()

我有点困惑。

Data::OpListIterator *input_;
*input_ = dataGraph_.node_insert(allocator_.make_owner<op::Input>(shape, dType, order, opName));
(*input_)->setOutputTensor(outputTensor, 0);

如果您正在使用

*input_->setOutputTensor(outputTensor, 0);

等于

*input_*.setOutputTensor(outputTensor, 0);

所以在这种情况下 input_ 被取消引用(这导致迭代器)然后在迭代器上调用函数 setOutputTensor 并将导致错误。

如果您正在使用 (*input_),指向迭代器的指针首先被解引用,然后被 -> 再次解引用。所以使用大括号的主要区别是取消引用的顺序。