c++ - 池容器的最佳数据结构是什么?

标签 c++ stl containers connection-pooling

目前我使用STL vector 容器模板放回并获取连接。

1) 在获取时,返回一个连接并从池 vector 中“删除()”。

2) 释放时,连接通过“push_back()”交还给连接池。

如果经常使用池,这可能会很重。所以我的问题是,有没有办法通过切换到其他数据结构来提高性能?

最佳答案

  • 如果您只在后面追加并从后面删除,vector 就可以了。
  • 如果您从正面和背面追加和删除,但从不从中间追加和删除,请使用 deque
  • 如果您经常需要从中间插入和删除,请使用list
  • 根据您的查找和遍历要求,set 可能是替代方案。

无论如何,您都应该剖析性能;为您的主容器使用 typedef,以便您可以快速切换和测试不同的选项。

可能还有其他您没有告诉我们但对容器选择很重要的要求:

  • vector 和 deque 是随机访问容器;列表和集合是基于节点的。这会影响迭代器失效。
  • vector、deque和list是序列容器,而set是关联的;这会影响按值查找。

关于c++ - 池容器的最佳数据结构是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7009270/

相关文章:

C++ STL--以 pair<int,string> 为数据类型的 make_heap

c++ - 来自 OpenCV 中用户分配数据的 Mat 构造函数

c++ - 为什么容器分配器内部的 sizeof(T) 与单独分配器中的不同?

azure - 缩放 Azure 容器实例

css - Div 没有移动附近的 div

c++ - 设置类成员 unique_ptr<T[]> 数组而不复制

c++ - 在内联汇编中使用函数范围的标签

c++ - std::remove_if 无法正常工作

c++ - 调用 C++ STL 容器的 value_type 的静态成员函数

c++ - *max_element() 在此代码段中如何工作?