说,我在代码中有两个向量,如下所示,我想使用 iterators擦除向量“data”中向量“index_to_filter”索引的元素。代码中的虚拟方式只是指出明显的错误。到目前为止,我无法让它工作,也不知道这是否可能是一个擦除删除成语?. 有没有办法并且我想念它?
谢谢。
#include <iostream>
#include <vector>
int main()
{
std::vector<int> data{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
std::vector<int> index_to_filter{ 1, 5, 8 };
/* needed result data = { 0, 2, 3, 4, 6, 7, 9 }*/
std::vector<int>::iterator iter = index_to_filter.begin();
while (iter != index_to_filter.end())
{
std::vector<int>::iterator iter_data = data.begin() + *iter;
iter_data = data.erase(iter_data);
iter++;
}
/* Throws : vector erase iterator outside range */
for (int i: data)
std::cout << i << std::endl;
system("pause");
return 0;
}
PS:vector.erase 问题在这里被放弃了数十次,但没有找到这个问题的线索!
PS:不欢迎没有迭代器的解决方案。(没有冒犯的意思 !)
谢谢