如何用零填充剩余位置?

hHow to fill remaining places with zeros?

#include <bits/stdc++.h>
using namespace std;

int main() {   
  array<vector<int>,10>arr1;

  arr1[0].push_back(1);
  arr1[0].push_back(2);
  arr1[0].push_back(3);
  arr1[1].push_back(4);
  arr1[1].push_back(5);
  arr1[2].push_back(6);
  arr1[7].push_back(100);

  for(auto i:arr1) {
    for(auto j :i)
      cout<<j<<" ";cout<<"\n";
  }
}

我正在创建向量数组并推送一些值,但我不知道如何使剩余位置为零。 我有一个想法,首先使每个数组内的所有向量都包含大小为 10 的零。而不是使用 push_back,我将使用 at().

但我需要代码在大小为 10 的零数组中生成向量。

输出 :

1 2 3 
4 5 
6 




100 


Q2)

有什么区别
array<vector<int>,10>arr;
vector<int> arr[10];

你可以这样做:

array<std::vector<int>,10>arr1;
for ( auto& vec : arr1 )
    vec = std::vector<int>(10, 0);

默认用0s填充所有向量。但是,您不能再执行 push_back,因为它会插入到 11th 位置。

第二个问题:

它们是等价的(静态数组保存指向动态数组的指针)。 array<vector<int>,10>arr 可能是更好的方法,因为它允许您使用范围循环和其他 STL 算法。