【发布时间】:2014-04-12 23:19:33
【问题描述】:
我想以相反的顺序从向量中删除元素,从最后一个元素开始。据我所知,使用迭代器最简单的方法是:
std::vector<int> data = ...
std::vector<int>::iterator iter;
for(iter = data.end() - 1; iter != data.begin() - 1; iter--) {
data.erase(iter);
}
我的问题是,这些 erase() 调用中的每一个是否都是 O(1),因为我们在最后删除,即使删除的一般复杂性是 O(n)?另外,假设向量至少有 1 个元素,这段代码是否“安全”?
【问题讨论】:
-
data.erase(data.rbegin(), data.rend())怎么样? -
您的实际问题是什么?整数向量的顺序无关紧要。
标签: c++ vector iterator time-complexity invalidation