我有一种情况。我为我的一项任务使用了模板化功能。对于这个函数,我通过引用传递迭代器。现在,我必须从矢量中删除几个元素。我如何仅使用迭代器来做到这一点? PL找到各自的代码:使用迭代器删除元素,无需知道矢量
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;
}
有很多已经问过的问题,但他们都在上下文中的载体。所以myVec.erase(*first)
很容易..
我也意识到,它不是一个很好的方式,我通过引用传递迭代器。但是我遵循简单的规则:当某些东西需要更改或避免大量复制时使用引用。我的情况是适合的第一个条件。
那么如何删除?
参见['std :: erase(std :: remove_if())'idiom](http://en.cppreference.com/w/cpp/算法/删除) – YSC
@YSC我不认为有'std :: erase'。关键是你需要一个'std :: vector'实例来调用'std :: vector :: erase'。 – juanchopanza
@juanchopanza不是这里不是。虽然我不能编辑。周一早上错字。 – YSC