请参阅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矩阵的第一行重置为零值。但是如何重置第一列呢?
答案 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;