C++ 如何使用迭代器操纵泛型函数中(向量、deque…)的大小?

C++ 如何使用迭代器操纵泛型函数中(向量、deque…)的大小?,c++,C++,我的工作是生成一个泛型函数,该函数接收到第一个元素的迭代器,迭代器作为最后一个元素的引用(向量,deque…),我的工作是过滤掉一些元素。是否可以删除元素并重新调整容器大小? 谢谢大家! 不,这是不可能的。是容器的方法,您无法从迭代器访问容器。不,这是不可能的。是容器的一个方法,您无法通过迭代器访问容器。通常,您无法修改容器的大小,该容器包含由一对迭代器传递给您的内容。如果有可能的话,那就很奇怪了。如果只将容器的一部分作为范围传递给您会怎么样?若将指向嵌入数组内容的两个指针传递给您会怎么样?如何

我的工作是生成一个泛型函数,该函数接收到第一个元素的迭代器,迭代器作为最后一个元素的引用(向量,deque…),我的工作是过滤掉一些元素。是否可以删除元素并重新调整容器大小?
谢谢大家!

不,这是不可能的。是容器的方法,您无法从迭代器访问容器。

不,这是不可能的。是容器的一个方法,您无法通过迭代器访问容器。

通常,您无法修改容器的大小,该容器包含由一对迭代器传递给您的内容。如果有可能的话,那就很奇怪了。如果只将容器的一部分作为范围传递给您会怎么样?若将指向嵌入数组内容的两个指针传递给您会怎么样?如何调整嵌入阵列的大小


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

通常,您不能修改由一对迭代器传递给您的内容的容器大小。如果有可能的话,那就很奇怪了。如果只将容器的一部分作为范围传递给您会怎么样?若将指向嵌入数组内容的两个指针传递给您会怎么样?如何调整嵌入阵列的大小


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

应该能够使用,具体取决于您要针对的容器。如果您只获得迭代器,
擦除
是容器的一个成员函数,而且不是通用的。看起来您正在重新创建
std::remove
std::remove\u如果
。不,这是不可能的。看看它是如何工作的。你不能调整你不拥有的容器的大小。你只是有它的边界(迭代器到它的第一个和最后一个元素)@CoryKramer erase remove idiom仍然需要访问容器,迭代器还不够,应该能够使用,这取决于你打算针对哪个容器如果你只得到迭代器,问题在于,
擦除
是容器的一个成员函数,不是泛型函数。看起来您正在重新创建
std::remove
std::remove\u如果
。不,这是不可能的。看看它是如何工作的。你不能调整你不拥有的容器的大小。你只是有它的边界(迭代器到它的第一个和最后一个元素)@CoryKramer-erase-remove-idiom仍然需要访问容器,迭代器不够,或者容器可能根本没有
erase()
方法或类似的方法。例如,嵌入式数组.或容器可能根本没有
erase()
方法或类似方法。例如嵌入式阵列。