C++ 从并发向量中删除元素
C++ Removing elements from concurrent vectors
我正在使用Visual C ++构建一个网络入侵检测系统,其组件之一是整个网络的TCP会话管理器。TCP 会话数据存储在并发向量中,以便可以从其他线程访问它。我发现一旦会话关闭,就没有简单的方法可以从并发向量中删除会话。所以我的问题是,您知道从并发向量中删除项目的最聪明的方法是什么。
智能 == 相当容易编程,不会对性能造成太大影响谢谢
我会考虑在这里使用std::set
而不是向量 - 特别是如果存储的项目数量很大。 我想您还需要经常执行查找。
从集合中搜索和删除对于std::vector
来说O(log(n))
复杂性而不是O(n)
- 尽管 集中的琐碎插入案例是O(1)
的,而不是与集合O(log(n))
。
您还需要互斥锁来保护所有这些操作。
相关文章:
- 如何从存储在std::映射中的std::集中删除元素
- 从嵌套在std::映射中的std::列表中删除元素的最佳方式
- 从矢量中删除元素后出现隔离错误
- 如何使用remove_if从矢量中删除元素
- 如何从使用 for 循环中的矢量大小的矢量中删除元素
- C++映射不删除元素
- 如何从标准::元组中删除元素?
- 在动态数组中添加/删除C++元素
- 如何通过比较彼此的成员从QStringList中删除元素
- 如何修复从矢量中删除元素的错误?
- 从 std::set 中删除元素,同时在 C++17 中迭代该元素
- 使用remove_if从矢量中删除元素
- 用C++从三维矢量中删除元素
- 从对象数组中删除元素
- 如何在不使用 vector::erase() 的情况下编写自定义 Vector 方法来删除元素?
- C++ - 按自定义数据类型向量的值删除元素
- 从任意容器中廉价删除元素的惯用方法?
- 从数组中删除元素不起作用的函数
- 删除元素 BST
- 从向量中删除元素时未处理的异常