如何在 int 类型的二维向量中 push_back 数据

新手上路,请多包涵

我有一个向量并想在运行时将 int 数据存储到其中我可以以这种方式将数据存储在 2D 向量中吗?

 std::vector<std::vector <int>> normal:
    for(i=0;i<10;i++){
        for(j=0;j<20;j++){
            normal[i].push_back(j);
    }
}

原文由 saru 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 696
1 个回答

让我们用一个简单的贪心问题来理解。股票买卖:

一种方法是使用临时向量,即

vector<vector<int> > stockBuySell(vector<int> A, int n){
    vector<vector<int>> v;
    vector<int> temp;
    for(int i=1;i<n;i++)
    {
        if(A[i]>A[i-1])
        {
            temp.push_back(i-1);
            temp.push_back(i);
            v.push_back(temp);
            temp.clear();
        }
    }
    return v;
}

另一种方法是:

 vector<vector<int> > stockBuySell(vector<int> A, int n){
    vector<vector<int>> v;
    for(int i=1;i<n;i++)
    {
        if(A[i]>A[i-1])
        v.push_back({i-1,i});
    }
    return v;
}

所以,如果我们必须在二维向量中推一些小尺寸的向量,比如 2 或 3,那么这样我们可以直接推入一个二维向量,即 vector_name.push_back({1,2,3});同样使用 {} 括号。因此我们不必使用任何额外的临时向量。

原文由 Vivek Verma 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题