0

我的工作是创建一个通用函数,它接收一个迭代器到第一个,迭代器作为对最后一个元素(向量,双端队列...)的引用,我的工作是过滤掉一些元素。是否可以删除元素并重新占用容器?谢谢你!

4

2 回答 2

2

不,这是不可能的。erase()是容器的一种方法,你不能从迭代器访问容器。

于 2020-04-17T12:01:31.103 回答
0

通常,您不能修改由一对迭代器传递给您的内容的容器的大小。如果有可能,那就太奇怪了。如果仅将容器的一部分作为范围传递给您怎么办?如果将 2 个指向嵌入式数组内容的指针传递给您怎么办?您将如何调整嵌入式数组的大小?

有了您的限制(2 个迭代器作为一个范围传递),唯一可行的解​​决方案是做什么std::remove()- 重新排列元素,因此您将有 2 个范围,保留元素和其余元素并返回一个迭代器,该迭代器显示边界在哪里即要擦除的元素范围从哪里开始。如果您想将有效元素的范围传递给进一步的算法,甚至不需要调整容器的大小,这个迭代器也可以被视为一个新的端点。

于 2020-04-17T12:31:04.383 回答