【发布时间】:2012-05-20 23:07:00
【问题描述】:
如果出现以下情况,我应该使用哪个 STL 容器:
- 定期插入和删除数据。
- 定期随机访问数据。
例如:dataset(4,10,15) 如果我想找到最接近 9 的数字,那么它应该返回 10。
- 我只存储一个整数。
- 需要排序
- 可以去 10 万个数据集
我想过用vector,但是vector的插入和移除很昂贵。
vector<int>
如果我要使用列表,我必须在访问数据之前访问 O(n) 个元素。
list<int>
我正在考虑使用 set,因为如果它被排序会很好,但我不太确定使用 SET 的效率
所以我希望有人能给出一个好的解决方案!
【问题讨论】:
-
这完全取决于您插入和访问数据的方式,以及数据的排序方式。你需要随机访问吗?您需要保持数据的准确顺序吗?
-
您希望如何访问您的数据?因为访问数据的向量也是 o(n) 除非您已经知道要访问的项目的索引?
-
如果向量已排序,则查找只是 log(n),因为您可以进行二分搜索
-
如果可以选择 Boost,请将您的结果与 Containers 库中 Boost 的“平面集”进行比较。
标签: c++ stl containers