此问题与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);
答案 0 :(得分:2)
如果您正在使用
*input_->setOutputTensor(outputTensor, 0);
等于
*input_*.setOutputTensor(outputTensor, 0);
因此,在这种情况下,input_
被取消引用(这将导致迭代器),然后在迭代器上调用函数setOutputTensor
并会导致错误。
如果使用的是(*input_)
,则指向迭代器的指针首先被取消引用,然后被->
再次取消引用。因此,使用花括号的主要区别在于取消引用的顺序。