So, I recently figured out, that we can initialize an n sized vector with default values by writing e.g. `vector<int> x(n, default_value)`

.

This can also be applied to n dimensional vectors, e.g. n=3:

```
vector<vector<vector<int>>> x(n, vector(n, vector(n, default_value)))
```

Has this approach any advantages or disadvantages over doing:

```
vector<vector<vector<int>>> x;
x.resize(n);
for (int i = 0; i < n; i++)
{
x[i].resize(n);
for (int j = 0; j < n; j++)
{
x[i][j].resize(n);
}
}
```

### >Solution :

The first one first creates `default_value`

for each vector and then copies it to the destinations, so you get `(n+1)^k`

allocations instead of `n^k`

.

You forgot to initialize the integer-based vector. Therefore I argue the first version is less error-prone ðŸ˜‰ It’s also much cleaner and shows the intention clearly.

Although second could benefit from `for(auto& c:vec)`

loops instead of indices. Or `std::for_each`

, or any other loop-hiding stuff… Anyway you are doing initialization -> just use constructors.