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

Piu*_*der 8 c++ containers stl connection-pooling

目前我使用STL矢量容器模板放回并获取连接.

1)在get上,返回一个连接并从池向量中"擦除()"d.

2)在释放时,通过"push_back()"将连接传回池中.

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

Ker*_* SB 11

  • 如果你只是在后面附加并从背面擦除,那vector很好.
  • 如果你从正面和背面追加和擦除,但绝不从中间删除,请使用deque.
  • 如果您经常必须插入并从中间擦除,请使用list.
  • 根据您的查找和遍历要求,set可能是一种替代方案.

在任何情况下,您都应该分析性能; 为主容器使用typedef,以便快速切换和测试不同的选项.

可能还有其他要求您没有告诉我们,但对于容器的选择有哪些要求:

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