Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想知道是否可以在 find 的同时从 stl:map 中删除?并发意味着 - 两个线程同时尝试,一个用于擦除,一个用于调用 find。
当然不是。stl::map基于自动平衡二叉树(通常是红黑)。erase最终可能会导致重排树。
stl::map
erase
在同一个对象上同时调用一个const方法和一个非const方法是不行的,同时调用两个非const方法也是不行的。但是,可以同时调用 2 个const方法。这适用于所有*const正确的代码,而不仅仅是标准库。
const
所以,在你的情况下,不,它不安全。
*除非它是内部线程安全的,这是糟糕的设计。标准库中没有任何内容。