gpt4 book ai didi

c++ - 在 ptr_map 中插入或更新

转载 作者:行者123 更新时间:2023-11-30 03:26:40 25 4
gpt4 key购买 nike

如果键存在,ptr_map 的插入方法不会更新数据。所以我们需要使用替换:

boost ptr_map replacing the value

ptr_map有insertOrUpdate的方法吗?

1) if a key does not exist, calls insert
2) if it exists, call replace

我想这就是 std::map 插入的工作方式。

ptr_map 有一个 [] 运算符。但它返回引用?我不确定使用它来执行上述操作是否安全。

谢谢,

最佳答案

I guess this is how std::map insert works

没有。事实上,std::map::insert 查找匹配的键并将迭代器返回到现有元素(如果找到)。它不会替换。 (您可能对 operator[] 感到困惑,它返回对新元素/现有元素的左值引用)。

ptr_map has a [] operator. But it returns reference? I am not sure if it is safe to use it for doing the above.

当然可以。但是,如果您的元素类型是多态的,则您不应该 分配给引用。 (可以说,多态值类型是 Boost 指针容器的一个关键用例)。因为如果这样做,您可能会以对象切片 ( What is object slicing? ) 结束。

如果你真的想用/另一个对象/替换对象(托管指针)使用ptr_map::replace。如果您只需要更新 map 中已有的对象,请随意使用 operator[]

关于c++ - 在 ptr_map 中插入或更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48120268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com