IDE - Visual Studio 2008, Visual C ++
- У меня есть собственный класс Class1 с конструктором копирования.
- У меня также есть вектор
- Данные вставляются с использованием следующего кода
Class1* objClass1;
vector<Class1> vClass1;
for(int i=0;i<1000;i++) {
objClass1 = new Class1();
vClass1.push_back(*objClass1);
delete objClass1;
}
Теперь при каждой вставке вектор перераспределяется, и все существующее содержимое копируется в новые местоположения. Например, если вектор имеет 5 элементов и если я вставляю 6-й элемент, предыдущие 5 элементов вместе с новым копируются в новое место (я понял это, добавив операторы log в конструкторы копирования.)
При использовании Reserve () это, однако, не происходит, как ожидалось! У меня есть следующие вопросы
- Обязательно ли всегда использовать резервный оператор?
- делает ли vector перераспределение каждый раз, когда я делаю push_back ; или это происходит потому, что я отлаживаю ?