gpt4 book ai didi

c++ - 使用迭代器删除元素,不知道 vector

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:06:53 26 4
gpt4 key购买 nike

我有一个情况。我为我的一项任务使用了模板化函数。对于这个函数,我通过引用传递迭代器。现在,我必须从 vector 中删除几个元素。我如何仅使用迭代器来做到这一点?请找到相应的代码:

template <class BidirectionalIterator, class Iterator> bool

SomeFunc( BidirectionalIterator& first, BidirectionalIterator& last, Iterator anotherVecBegin )
{
while((first+1) != last)
{
if(some_condition)
// delete (first); HOW?
else if(some_other_condition)
// delete (first + 1); HOW?
}

// add something to another vector using anotherVecBegin

return true;
}

已经有很多问题被问到,但它们在上下文中都有一个 vector 。所以 myVec.erase(*first) 很简单..

我也知道通过引用传递迭代器并不是一个很好的方法。但我遵循简单的规则:在预期更改某些内容或避免大量复制时使用引用。我的场景符合第一个条件。

那么我该如何删除呢?

最佳答案

如果您只有容器元素的迭代器,则无法修改容器。迭代器的全部要点是将容器的概念与元素范围的概念分开,以便可以根据后者普遍地表达算法而不关心前者。这也是为什么我们有一个 remove 算法来置换一个范围并返回一个适合从容器中删除元素的迭代器,但删除需要由知道的人来完成容器。

关于c++ - 使用迭代器删除元素,不知道 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34718141/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com