gpt4 book ai didi

c++ - 为什么我需要将这个取消引用的迭代器分配给一个临时值?

转载 作者:行者123 更新时间:2023-11-28 05:34:07 25 4
gpt4 key购买 nike

我正在开发一个包含树数据结构的项目,树中的每个节点都存储指向 vector 中子节点的指针。在我的一个函数中,我试图使用迭代器遍历 vector ,但为了让它工作,我必须将取消引用的迭代器分配给一个临时变量:

std::vector<Node*>::iterator p;
for (p = n->children.begin(); p < n->children.end(); p++)
{
Node* t = *p;
// if board is complete, mark as such and update score
if (t->m_board.isComplete())
{
// ...
}
}

如果我尝试在没有临时值的情况下编写相同的代码:if (*p->m_board.isComplete()) 然后我收到错误消息“表达式必须具有指向类的指针type。不是这样吗?取消引用我的迭代器不应该返回指向我的 Node 类的指针吗?

最佳答案

根据 Operator Precedence , operator-> 的优先级高于 operator*, 那么 *p->m_board.isComplete() 等同于 *( p->m_board.isComplete()),编译器提示 p->m_board.isComplete() 格式错误。

你可以

if ((*p)->m_board.isComplete()) 

关于c++ - 为什么我需要将这个取消引用的迭代器分配给一个临时值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38734174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com