У меня есть очень большой многомерный вектор, который постоянно меняется в размере. Есть ли смысл использовать функцию vector.reserve(), когда я знаю только приблизительные размеры.
Итак, в основном у меня есть вектор
A[256*256][x][y]
где x изменяется от 0 до 50 для каждой итерации программы, а затем снова возвращается к 0. Значения y могут каждый раз отличаться, а это значит, что для каждого из [256*256][y] элементов вектор y может быть разного размера, но все же меньше 256;
Итак, чтобы прояснить мою проблему, это то, что у меня есть:
vector<vector<vector<int>>> A;
for(int i =0;i<256*256;i++){
A.push_back(vector<vector<int>>());
A[i].push_back(vector<int>());
A[i][0].push_back(SOME_VALUE);
}
Добавьте элементы в вектор...
A.clear();
И после этого я делаю то же самое снова сверху.
Когда и как я должен резервировать место для векторов. Если я правильно понял, я бы сэкономил много времени, если бы использовал резерв, так как я все время меняю размеры?
Каковы будут отрицательные/положительные стороны резервирования максимального размера, который может иметь мой вектор, который в некоторых случаях будет [256*256][50][256].
КСТАТИ. Я знаю о разных шаблонах Matrix и Boost, но решил использовать векторы на этом...
EDIT: мне также было интересно, как использовать резервную функцию в многомерных массивах. Если я зарезервирую вектор только в двух измерениях, скопирует ли он все это, если я превыслю его возможности в третьем измерении?