我无法从c ++中的多维向量中删除整行。我想存储N L维唯一向量。我尝试过这样的事情:
vector< vector<int > > my_vec;
for(i=0;i<N;i++){
my_vec.push_back(vector<int>());
for(j=0;j<L;j++){
t =(int)(distribution(engine)*Tr); //JUST A RANDOM NUMBER GENERATOR
traits[i].push_back(t);
}
if ( array unique ){
ALL GOOD !
}
else{ my_vec[i].pop_back();i--;} // THIS IS GIVING ME PROBLEMS.
}
我需要一个向量的原因是,在后面的代码中,维度会发生变化。
提前谢谢你。
答案 0 :(得分:2)
如果要从向量中删除项目,请调用vector::erase
方法,并为要删除的项目提供迭代器。如果要擦除的项目是另一个向量,则无关紧要。
这是一个小样本。
#include <iostream>
#include <vector>
using namespace std;
typedef vector<vector<int>> VecInt2D;
void erase_a_row(VecInt2D& v, size_t where)
{
if ( !(where >= 0 && where < v.size()))
return;
v.erase(v.begin() + where);
}
int main() {
VecInt2D myVect(10);
cout << myVect.size() << "\n";
// erase the last item
erase_a_row(myVect, myVect.size() - 1);
cout << myVect.size() << "\n";
return 0;
}