c++ - 返回对数据结构拥有的对象的引用

标签 c++

我的集合:

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/

相关文章:

c++ - MacOS上的Xcode 11项目不要在一个函数中使用sin和cos: undefined symbol “___sincosf_stret”

c++ - QSortFilterProxyModel 崩溃的应用程序

c++ - C++中的多态对象数组更改对象的详细信息

c++ - 递归中的主要功能

c++ - 函数参数 - 指针或对指针的引用?

c++ - 在 C++ 中绕过 operator new 的重写

c++ - 原始类型作为 C++ 中的对象

c++ - 自动存储时长的具体要求是什么?

c++ - 使用 SDL_SetWindowIcon() 没有窗口图标

c++ - 将 D 库链接到 C++ 代码