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

时间:2018-08-17 09:26:43

标签: c++ pointers stl iterator dereference

此问题与stackoverflow上的另一个问题有关。

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

因此node_insert()返回一个迭代器,并将其分配给*input_。这使我认为*input_不是指向迭代器的指针,因为如何将迭代器分配给指向迭代器的指针。

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

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

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

我有点困惑。

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

1 个答案:

答案 0 :(得分:2)

如果您正在使用

*input_->setOutputTensor(outputTensor, 0);

等于

*input_*.setOutputTensor(outputTensor, 0);

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

如果使用的是(*input_),则指向迭代器的指针首先被取消引用,然后被->再次取消引用。因此,使用花括号的主要区别在于取消引用的顺序。