Вам ничего не нужно delete
в вашем коде, так как вы ничего не создали с помощью new
.
Если вы тоже хотите сделать все это в одной строке, вы можете использовать std::for_each
и std::fill
:
#include <algorithm>
#include <vector>
std::vector<std::vector<int>> a;
// set every element in two dimensional vector to 5
std::for_each(a.begin(), a.end(), [](std::vector<int> &x){std::fill(x.begin(), x.end(), 5);});
Приложение, связанное с вашим комментарием: Да, ваш исходный вектор хранится в стеке.Поскольку вы не передаете пользовательский распределитель, вектор будет использовать std::allocator
для выделения его элементов (которые в вашем случае являются векторами типа int).std::allocator
выделяет эти элементы в динамической памяти, иначе говоря, вам не нужно беспокоиться об освобождении или удалении этой памяти, поскольку она обрабатывается внутренними элементами вектора.Это означает, что память удаляется самое позднее, если вызывается деструктор вектора (например, потому что он выходит из области видимости) или, возможно, раньше, если вы изменяете размер вектора.