对象从容器中删除自身

csi*_*siz 1 c++ containers

所以我有一个容器(任何类型,可能是std :: map或std :: vector),它包含一个类的对象,在一个线程中运行一些网络事物,检查它是否仍然连接(该线程是在该类中定义的在建造时发射).

有什么方法可以让对象在断开连接时从容器中删除自己,还是应该将线程移到对象外面并使用该类来存储数据?

小智 7

为了让对象从容器中删除它,它必须知道它所在的容器.你需要在对象中维护一个指向容器的指针.您还必须使用锁来保护容器,以阻止多个线程同时访问容器.

我想我更喜欢你的第二个解决方案 - 一些管理对象会从集合中删除死对象.如果不出意外,这将更容易调试,锁定逻辑集中在一个对象中.