C++ std::vector::const_iterator issue



所以我对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

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

最新更新