gpt4 book ai didi

c++ - 在 map 中使用已删除的元素

转载 作者:太空宇宙 更新时间:2023-11-04 13:03:37 25 4
gpt4 key购买 nike

我想知道我是否仍然可以访问/修改 map 中已删除元素的数据,如下所示:

struct CustStruct {
int a;
int b;
};

void useAfterErase() {
map<int, CustStruct> myMap;
myMap[0] = {0,1};
myMap[3] = {2,3};
myMap[4] = {4,5};

auto itr = myMap.find(3);
auto & element = itr->second;

myMap.erase(itr);

// access after erased
element.a = 100;
element.b = 100;

cout << element.a << " " << element.b << endl;
}

假设它是单线程并且访问/修改是在映射修改之前的删除之后,那么访问/修改总是安全的吗?

最佳答案

从来都不安全。当对象从 map 中移除时,它几乎肯定会被销毁。 (如果不是,那是什么时候?)

关于c++ - 在 map 中使用已删除的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43284676/

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