我的集合:
std::set<Object> objects;
我想找到一个对象并将其作为引用返回,如果不存在则插入:
const Object& get(params...){
Object obj(params...);
std::set<Object>::const_iterator i = objects.find(obj);
if(i != objects.end())
return *i;
objects.insert(obj);
return * objects.find(obj);
}
这会导致段错误还是会一直有效?
最佳答案
取决于您对集合的处理方式。
std::set
中的插入和删除操作不会使集合中其他元素的迭代器失效,但是如果您要从 中删除该元素集合,那么迭代器和对它的引用将失效,您最终可能会得到一个无效的引用。
关于c++ - 返回对数据结构拥有的对象的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14692701/