【发布时间】:2010-10-26 21:10:33
【问题描述】:
我有一个 std::vector
std::vector<int> vec;
vec.push_back(6);
vec.push_back(-17);
vec.push_back(12);
vec.erase(???);
【问题讨论】:
-
考虑使用在两端提供插入和删除的 std::deque。
-
不,不要仅仅因为你可能想删除一个元素就考虑使用 deque,这真的是一个糟糕的建议。您可能想要使用双端队列或向量的原因有很多。确实,从向量中删除元素的成本很高 - 特别是如果向量很大,但没有理由认为双端队列会比您刚刚发布的代码示例中的向量更好。
-
例如,如果您有一个图形应用程序,您可以在其中显示以交互方式插入/删除事物的“列表”,考虑您每秒运行列表 50-100 次以显示它们,你每分钟添加/删除几次。因此,就总效率而言,将“列表”实现为向量可能是更好的选择。
-
我推荐 std::vector.erase(...),这也是我的偏好——你可以选择删除单个元素或范围。