我应该实现一个从容器中删除一系列值的函数。所以
eraseRange(v, 1.5, 24);
例如,将从容器 v 中删除任何大于 1.5 且小于 24 的值。我的函数非常适用于列表,我在其中使用:
container.erase(remove_if(container.begin(), container.end(), rg));
其中 rg 检查它是否在范围内(该部分的实现不是问题,所以我不打算详细说明)。
但是,当为向量调用 eraseRange 并使用类似的方法来擦除值时,只会擦除第一个值。因此,如果我有一个数字从 1 到 10 的向量,我会调用:
eraseRange(v, 3, 7);
只有3个被删除。
现在这通常不会成为问题,我只需使用迭代器来检查值。除了这个特定的练习,for/while/do 循环是明确禁止的……
所以问题似乎出在具有随机访问迭代器的容器上。而且我不确定要实施什么作为替代方案。帮助?