【发布时间】:2020-06-14 02:02:53
【问题描述】:
生活给了我以下物品:
-
std::vector<T1> v1; std::vector<T2> v2;typename std::vector<T1>::iterator it_first;typename std::vector<T1>::iterator it_last;
以及以下约束:
v1.size() == v2.size() > 0v1.begin() <= it_first <= it_last <= v1.end()
从v1 中删除两个迭代器指向的范围是一个简单的单行,但是我如何也从v2 中删除相同的范围?
我可以很容易地解决这个问题,例如使用std::distance/advance 的组合构建v2 迭代器,但我想知道STL 是否为此提供了一些机制。像擦除删除习语加上变换操作之类的东西,也许?它似乎超出了我的 STL-fu...
【问题讨论】:
-
该范围由它的迭代器定义,它指向
v1。它不是v2中的范围,所以要非常小心您所说的“相同范围”是什么意思。 -
我在一个名为 STLSoft 的库中找到了
eraser_iterator的实现:github.com/synesissoftware/STLSoft-1.10/blob/beta-18/include/… 我对这种情况的可用性没有经验。
标签: c++ stl iterator containers erase