IDE - Visual Studio 2008, Visual C++Vector делает перераспределить на каждом push_back
- У меня есть пользовательский класс 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 элементов вместе с новым будут скопированы в новое место (я понял это, добавив в оператор-конструктор лог-отчеты).
При использовании резерв(), это, однако, происходит не так, как ожидалось! У меня есть следующие вопросы:
- Обязательно ли всегда использовать заявление о резерв?
- Выполняет ли вектор перераспределение каждый раз, когда я делаю push_back; или это происходит, потому что я отладки?
Что касается несвязанной ноты, было бы проще и эффективнее просто «vClass1.push_back (Class1());», без выделения памяти кучи. – doublep