Inserting elements in multidimensional Vector

c++, vector

Solution

Don't think of it as a multidimentional vector, think of it as a vector of vectors.

int n = 4;
std::vector<std::vector<int>> vec(n, std::vector<int>(n));

// looping through outer vector vec
for (int i = 0; i < n; i++) {
  // looping through inner vector vec[i]
  for (int j = 0; j < n; j++) {
    (vec[i])[j] = i*n + j;
  }
}

I included parentheses in `(vec[i])[j]` just for understanding.

Edit:

If you want to fill your vector via `push_back`, you can create a temporary vector in the inner loop, fill it, and then push_back it to your vector:

for (int i = 0; i < n; i++) {
  std::vector<int> temp_vec;

  for (int j = 0; j < n; j++) {
    temp_vec.push_back(j);
  }

  vec.push_back(temp_vec);
}

However, `push_back` calls result in slower code, since not only you need to reallocate your vector all the time, but also you have to create a temporary and copy it.

Problem

``` vector<vector<int>> sort_a; vector<int> v2; vector<int> v3; for (int i=0; i<4; ++i) { v2.push_back(i); for (int j=0; j<4; ++j) { v3.push_back(j); sort_a.push_back(v2); sort_a.push_back(v3); } } ``` Vector sort_a should be a 4x4 array, instead the output is 31x1 with lots of empty elements, how do i insert elements in a multidimensional vector ?

Original source

Related problems