C++ 可以在查找的同时从stl:map中删除吗
我想知道与find同时从stl:map中删除是否可以?C++ 可以在查找的同时从stl:map中删除吗,c++,stl,C++,Stl,我想知道与find同时从stl:map中删除是否可以? 并发意味着两个线程同时尝试擦除和调用查找。当然不是stl::map基于自动平衡二叉树(通常为红黑)擦除可能最终导致沉重的树重排。当然不会stl::map基于自动平衡二叉树(通常为红黑)erase可能最终导致重树重排。在同一对象上同时调用const方法和非const方法是不合适的,同时调用两个非const方法也是不合适的。但是,可以同时调用2const方法。这适用于所有*const正确的代码,而不仅仅是标准库 所以,对你来说不,这不安全 *除
并发意味着两个线程同时尝试擦除和调用查找。当然不是
stl::map
基于自动平衡二叉树(通常为红黑)<代码>擦除可能最终导致沉重的树重排。当然不会stl::map
基于自动平衡二叉树(通常为红黑)erase
可能最终导致重树重排。在同一对象上同时调用const
方法和非const
方法是不合适的,同时调用两个非const
方法也是不合适的。但是,可以同时调用2const
方法。这适用于所有*const
正确的代码,而不仅仅是标准库
所以,对你来说不,这不安全
*除非它是内部线程安全的,这是糟糕的设计。标准库中没有任何内容。在同一对象上同时调用
const
方法和非const
方法是不行的,同时调用两个非const
方法也是不行的。但是,可以同时调用2const
方法。这适用于所有*const
正确的代码,而不仅仅是标准库
所以,对你来说不,这不安全
*除非它是内部线程安全的,这是糟糕的设计。标准库中的任何内容都不是。你说的“并发”是什么意思?一个线程执行
擦除
,而另一个线程调用查找
?那不好:)请举例说明代码。你的问题模棱两可。可能重复你所说的“并发”是什么意思?一个线程执行擦除
,而另一个线程调用查找
?那不好:)请举例说明代码。你的问题模棱两可。可能是重复的