如何在 C++ 中 pop_back 多维向量中的整行
How do I pop_back an entire row in Mutlidimensional Vector in c++
我在用 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.
}
我需要向量的原因是在后面的代码中尺寸会改变。
提前谢谢你。
如果你想从向量中删除一个项目,调用 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;
}
我在用 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.
}
我需要向量的原因是在后面的代码中尺寸会改变。
提前谢谢你。
如果你想从向量中删除一个项目,调用 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;
}