迭代器解除引用

时间:2013-08-10 12:46:17

标签: c++ vector stl iterator dereference

我在c ++中使用了一个向量,

vector<Agents> agentlist;

为什么这样做,

(agentlist.begin() )->print();

这不是吗?

*(agentlist.begin() ).print();

使用*取消引用迭代器是否有效?

2 个答案:

答案 0 :(得分:2)

请参阅operator Precedence.的优先级高于*

*(agentlist.begin()).print();

表示为:

*((agentlist.begin()).print());

虽然迭代器没有.print()函数调用,但编译器会抛出编译错误。

你需要:

 agentlist.begin()->print();  or  (*agentlist.begin()).print();

答案 1 :(得分:2)

尝试使用(*(agentlist.begin())).print();:)