C ++从并发向量中删除元素

时间:2012-08-06 19:41:00

标签: c++ tbb

我正在使用visual c ++构建网络入侵检测系统,其中一个组件是整个网络的tcp会话管理器。 tcp会话数据存储在并发向量中,以便可以从其他线程访问它。我发现在会话关闭后,没有简单的方法可以从并发向量中删除会话。所以我的问题是你知道从同步向量中删除项目的最聪明的方法。

智能==相当容易编程,没有太多的性能影响 三江源

1 个答案:

答案 0 :(得分:1)

我考虑在这里使用std::set而不是向量 - 特别是如果存储的项目数量很大。我想你也经常想要执行查找。

对于O(log(n)),搜索和删除集合的复杂度为O(n),而不是std::vector - 尽管O(1)中的普通插入案例不是O(log(n))与集合。

您还需要使用互斥锁来保护所有这些操作。