如果我使用标准库函数在向量中搜索值find()
,以下代码会返回正确的引用吗?如果搜索在向量中找到所需的值,它应该返回对该值的引用。如果没有,它应该将值推到末尾并返回对新值的引用。
我说不出来。返回a.back()
应该没问题,因为它是定义的引用。i
在发现我不确定的情况下,它会取消引用迭代器。
int& foo(int i)
{
std::vector<int>::iterator found = find(a.begin(), a.end(), i);
if (found != a.end())
{
return *found;
} else {
a.push_back(i);
return a.back();
}
}
我说不出来。返回a.back()
应该没问题,因为它是定义的引用。i
在发现我不确定的情况下,它会取消引用迭代器。很明显,整个要点是让函数充当左值。它当然可以编译,但我不确定它是否正确。