Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 可以在查找的同时从stl:map中删除吗_C++_Stl - Fatal编程技术网

C++ 可以在查找的同时从stl:map中删除吗

C++ 可以在查找的同时从stl:map中删除吗,c++,stl,C++,Stl,我想知道与find同时从stl:map中删除是否可以? 并发意味着两个线程同时尝试擦除和调用查找。当然不是stl::map基于自动平衡二叉树(通常为红黑)擦除可能最终导致沉重的树重排。当然不会stl::map基于自动平衡二叉树(通常为红黑)erase可能最终导致重树重排。在同一对象上同时调用const方法和非const方法是不合适的,同时调用两个非const方法也是不合适的。但是,可以同时调用2const方法。这适用于所有*const正确的代码,而不仅仅是标准库 所以,对你来说不,这不安全 *除

我想知道与find同时从stl:map中删除是否可以?
并发意味着两个线程同时尝试擦除和调用查找。

当然不是
stl::map
基于自动平衡二叉树(通常为红黑)<代码>擦除可能最终导致沉重的树重排。

当然不会
stl::map
基于自动平衡二叉树(通常为红黑)
erase
可能最终导致重树重排。

在同一对象上同时调用
const
方法和非
const
方法是不合适的,同时调用两个非
const
方法也是不合适的。但是,可以同时调用2
const
方法。这适用于所有*
const
正确的代码,而不仅仅是标准库

所以,对你来说不,这不安全


*除非它是内部线程安全的,这是糟糕的设计。标准库中没有任何内容。

在同一对象上同时调用
const
方法和非
const
方法是不行的,同时调用两个非
const
方法也是不行的。但是,可以同时调用2
const
方法。这适用于所有*
const
正确的代码,而不仅仅是标准库

所以,对你来说不,这不安全


*除非它是内部线程安全的,这是糟糕的设计。标准库中的任何内容都不是。你说的“并发”是什么意思?一个线程执行
擦除
,而另一个线程调用
查找
?那不好:)请举例说明代码。你的问题模棱两可。可能重复你所说的“并发”是什么意思?一个线程执行
擦除
,而另一个线程调用
查找
?那不好:)请举例说明代码。你的问题模棱两可。可能是重复的