获取多维数组中的第一个维度

时间:2014-08-19 10:12:57

标签: c++ arrays multidimensional-array fill

请参阅MWE:

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector< vector<size_t> > a(2, vector<size_t>(3));
    a[0][0] = 1;
    a[0][1] = 1;
    a[0][2] = 1;


    a[1][0] = 2;
    a[1][1] = 2;
    a[1][2] = 2;  

    fill(a[0].begin(), a[0].end(), 0);


    return 0;
}

在这里,我使用fill将我的2x3矩阵的第一行重置为零值。但是如何重置第一列呢?

3 个答案:

答案 0 :(得分:2)

一种方法是:

for (auto &row: a)
    row[0] = 0;

矢量矢量不具有除矢量矢量之外的任何特定结构,即,没有内置的方式来获得列上的视图。如果您经常想要这样做,那么请考虑使用代表Matrix的(非标准)类。

答案 1 :(得分:2)

在c ++中,你实际上没有矩阵,你有一个向量的向量,所以没有一个操作可以导致你正在寻找的结果,因为你需要访问每一个&#34;柱&#34;修改它们时的向量。 相反,使用for循环。

for (int i = 0; i < a.size(); i++) a[i][0] = 0; 

您也可以将其放在辅助函数

void resetColumn(vector<vector<size_t>>& a, int col)
{
    for (int i = 0; i < a.size(); i++) a[i][col] = 0; 
} 

并在需要

时从您的主电话中拨打电话
int main()
{
    vector< vector<size_t> > a(2, vector<size_t>(3));
    a[0][0] = 1;
    a[0][1] = 1;
    a[0][2] = 1;


    a[1][0] = 2;
    a[1][1] = 2;
    a[1][2] = 2;  

    resetColumn(a, 1);


    return 0;
}

编辑:错别字

答案 2 :(得分:0)

for(int rw = 0;rw<ar.size();rw++)
       a[rw][0] = 0;