【发布时间】:2014-04-09 16:35:39
【问题描述】:
是否可以在 C++11 中对向量进行迭代时更改其大小?明明迭代器会失效,但是下面的干净语法还能用吗?
std::vector<some_type> vec;
for(auto elem : vec) {
if(condition(elem)) {
new_elem = function(elem);
vec.insert(iterator_associated_with_elem+1, new_elem);
}
//Don't insert on condition(new_elem)
}
如果不是,完成这项任务的最简洁的代码是什么?
【问题讨论】:
-
有趣的是,这种类型的代码对于
insert不会使迭代器无效的所有容器(例如std::list、std::set和std::map)完全有效.但是,对于缺少随机访问迭代器的类型,您必须将 +1 替换为std::next。