【问题标题】:Iterator Dereferencing迭代器解引用
【发布时间】:2013-08-12 06:59:21
【问题描述】:

我在 c++ 中使用向量,

vector<Agents> agentlist;

为什么会这样,

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

这不是吗?

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

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

【问题讨论】:

  • agentlist.begin() 周围不需要括号。

标签: c++ vector stl iterator dereference


【解决方案1】:

参见operator Precedence. 的优先级高于*

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

表示为:

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

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

你需要:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2022-10-20
      • 2016-01-25
      • 1970-01-01
      • 2011-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-24
      • 1970-01-01
      相关资源
      最近更新 更多