【发布时间】:2016-10-14 04:59:32
【问题描述】:
假设我们得到std::vector<T> V 和一个迭代器p 指向向量内的某个位置。
Q1:返回一个新向量w的好方法是什么,给定的迭代器p是std::end(w)?
我可以创建一个新向量 w,将元素从 std::begin(v) 移动到 p 并分配 p = std::end(w)。
Q2:有没有办法做我想做的,但保持pconst?
我的问题的起源如下:我有一个向量,我为其应用了std::remove(std::begin(v),std::end(v), elem)。这应该将所有不等于elem 的元素放入该范围的末尾并返回一个迭代器。我想在那里剪辑矢量。
【问题讨论】:
-
你不能返回一个 new 向量,因为迭代器只对给定的向量有效。不过,如果您愿意修改现有向量,只需致电
V.erase(p, V.end())。 -
你认为你为什么要这样做?
-
@LightnessRacesinOrbit 会用原因展开问题
-
擦除/删除习语有什么问题?此外,
remove不会将元素移动到末尾。结束元素具有未指定的值。