С на предыдущий вопрос о векторной емкости , мистер Бэйли сказал:
В текущем C ++ вы гарантируете, что перераспределение не произойдет после вызова до резервирования, пока вставка не примет размер, превышающий значение предыдущего вызова для резервирования. Перед вызовом для резервирования или после вызова для резервирования, когда размер находится между значением предыдущего вызова для резервирования и пропускной способностью, которую реализация может перераспределить досрочно, если она этого захочет.
Итак, если я правильно понимаю, чтобы гарантировать, что перераспределение не произойдет, пока не будет превышена емкость, я должен сделать резерв дважды? Не могли бы вы уточнить это?
Я использую вектор в качестве стека памяти следующим образом:
std::vector<double> memory;
memory.reserve(size);
memory.insert(memory.end(), matrix.data().begin(), matrix.data().end()); // smaller than size
memory.resize(memory.capacity(), 0);
Мне нужно гарантировать, что перераспределение не произойдет в вышеприведенном.
спасибо.
ps: я также хотел бы знать, есть ли лучший способ управлять стеком памяти аналогичным образом, кроме вектора