目前我使用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/