Ado*_*orn 5 c++ templates iterator vector c++11
我有一个情况.我已经使用模板化函数完成了我的任务之一.对于这个函数,我通过引用传递迭代器.现在,我必须从向量中删除一些元素.如何仅使用迭代器来完成此操作?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;
}
Run Code Online (Sandbox Code Playgroud)
有许多已经问过的问题,但它们都有一个上下文的向量.所以myVec.erase(*first)很容易..
我也知道它不是一个非常好的方式,我通过引用传递迭代器.但我遵循简单的规则:在预期某些事情发生变化时使用引用或避免重复复制.我的方案符合第一个条件.
那么如何删除?
如果您拥有的只是容器元素的迭代器,则无法修改容器.迭代器的重点在于将容器的概念与元素范围的概念分开,因此算法可以用后者来普遍表达,而不用关心前者.这也是为什么我们有一个remove算法可以置换一个范围并返回一个适合从容器中删除元素的迭代器,但是擦除需要由知道容器的人来完成.
| 归档时间: |
|
| 查看次数: |
610 次 |
| 最近记录: |