繁体   English   中英

如何使用迭代器在通用 function 中操纵(向量,双端队列…)的大小?

[英]How can I manipulate size of(vector,deque…) inside generic function using iterators?

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM