c++ - 如何在 C++ 的多维 vector 中 pop_back 整行

标签 c++ multidimensional-array vector

我无法从 C++ 中的多维 vector 中删除整行。我想存储 N 个 L 维唯一 vector 。我试着做这样的事情:

 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 的原因是在后面的代码中尺寸会改变。

提前致谢。

最佳答案

如果你想从 vector 中删除一个项目,调用 vector::erase 方法,并给它一个指向要删除的项目的迭代器。要删除的项目是否是另一个 vector 并不重要。

这是一个小样本。

#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;
}

现场样本:http://ideone.com/xvDpjT

关于c++ - 如何在 C++ 的多维 vector 中 pop_back 整行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28296268/

相关文章:

c++ - 错误 : no match for call to

c++ - 优化速度 : Queue of Vectors vs. vector 指针队列

c++ - 在 C++ 中删除和释放 vector 内存的正确方法(防止不同的内存相关错误)

c++ - 编译旧的 C++ unix 应用程序以在 windows 中使用

c++ - 概念的重载/特化

c++ - 如何在 C++ 中定义自引用映射?

java - 如何在Java中按给定位置打印矩阵的垂直和水平线?

python - 如何沿轴展平一个 numpy ndarray?

multidimensional-array - C# 中的 PHP 多维

c++ - 表达式 : cannot increment value-initialized iterator (Error in Debug, 但不在 Release模式下 - Visual Studio)