我想知道从stl:map中删除是否可以与find同时删除? 并发意味着 - 两个线程同时尝试一个擦除,一个同时调用查找。
答案 0 :(得分:6)
当然不是。 stl::map
基于自动平衡二叉树(通常为红黑)。 erase
可能最终导致重树重排。
答案 1 :(得分:1)
同时在同一个对象上调用const
方法和非const
方法是不行的,并且在此处调用2个非const
方法是不可行的。同时。但是,可以同时调用2 const
个方法。这适用于所有 * const
正确的代码,而不仅仅是标准库。
所以,在你的情况下,不,这是不安全的。
*除非它内部是线程安全的,否则设计很差。标准库中没有任何内容。