我无法正确掌握这个想法和编程这样的事情(我是初学者):我有一个向量。向量可以说元素:fieldA、fieldB、fieldC。因此,有了这些向量的数组,我想检查,从数组中的最后一个向量开始,然后转到第一个向量的方向,如果其中一个元素具有特定值,可以说 if (vect[i].字段A == 0.0)。在这种情况下,如果 (vect[i-1].fieldA == 0.0) so 具有相同的值,我想从数组中删除整个向量。有人可以为我提供一部分可视化的代码,如何创建正确的“反向迭代”循环并使用函数删除它?我正在尝试使用erase()、remove()、deque(),但我失败了。
我不想在这里弄乱我的代码。
感谢帮助!
编辑。所以我首先用向量值在我的数组中输入一个循环,然后我想从最后删除所有包含元素特定值的向量,例如 fieldA == 0.0
我想剪切数组,而不仅仅是删除向量的内容!classB 和 classA 之间存在适当的继承,因此馈送效果很好,我只想通过删除向量来解决这个问题。示例:包含 2 个元素的向量数组。输入:0,1 0,3 3,3 2,3 0,6 5,6 0,8 0,7 0,6 输出:0,1 0,3 3,3 2,3 0,6 5,6 0 ,8。结论:0,7 和 0,6 向量被删除。
classA tmp;
for (std::vector<std::classB>::iterator iter = newW.begin(); iter != newW.end(); iter++)
{
tmp.set_fieldA(iter->a);
tmp.set_fieldB(iter->b);
tmp.set_fieldC(iter->c);
objA.push_back(tmp);
}
vector<std::classA> objA;
for(int i = objA.size()-1; i > 0; i--)
{
if (objA[i].fieldA == 0.0)
if (objA[i-1].fieldA == 0.0)
objA.erase(objA[i-1]); //remove last vector from array
}