我试图在引用中返回一个迭代器
void class::foo(vector<bar>::iterator& iterBar)
{
vector<bar> copy = GetVecBar();
iterBar = min_element(copy.begin(), copy.end(), [](const bar& a, const bar& b) { return a.GetInt() < b.GetInt(); });
}
这行得通,但是当它返回到 main 时,迭代器指向随机的东西。
主要内容:
vector<bar>::iterator iterBar;
Object.foo(false, iterBar);
感谢帮助
最佳答案
vector<bar> copy = GetVecBar();
这声明了一个名为 copy
的本地对象在你的功能中。该对象在函数返回时被销毁,就像函数作用域中的所有对象一样。
然后该函数返回一个引用此 vector 中某个值的迭代器。但是,由于 vector 本身被销毁,因此当函数返回时,迭代器指的是一个被销毁的对象,因此您会看到结果。
不清楚是什么GetVecBar()
来自显示的代码,但无论它是什么,您都需要更改代码以搜索实际 vector ,而不是它的拷贝。
如果您的 GetVecBar()
被声明为返回 vector<bar> &
, 那么这应该很简单
vector<bar> © = GetVecBar();
关于c++ - 返回引用中的迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40581333/