gpt4 book ai didi

C++ std::vector::const_iterator 问题

转载 作者:行者123 更新时间:2023-11-27 23:14:52 25 4
gpt4 key购买 nike

所以我是 C++ 的新手,我对以下 std::vector::const_iterator 有疑问:

for (vector<shared_ptr<FSNode>>::const_iterator itr = curNode->GetSubNodes().begin() ; itr != curNode->GetSubNodes().end(); itr++)
{
shared_ptr<FSNode> nextNode = *itr;
GetXMLFromNode(nextNode, xmlDom, dirEle);
}

GetSubNodes 访问器

const std::vector<shared_ptr<FSNode>> FSNode::GetSubNodes()
{
return subNodes_;
}

基本上得到一个运行时错误,其中 itr 应该是一个常规迭代器。有人知道我哪里出错了吗?可能是一个非常简单的问题,但我现在没有看到。

最佳答案

GetSubNodes 按值返回 vector 。所以你每次调用它时都会得到一个不同的 vector 拷贝。当拷贝被销毁时,您从此拷贝获得的迭代器无效,这发生在语句末尾。而是通过引用返回 vector 。

const std::vector<shared_ptr<FSNode>> & FSNode::GetSubNodes()
///////////////////////////////////// ^
{
return subNodes_;
}

关于C++ std::vector::const_iterator 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17076724/

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