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 элементов вместе с новым будут скопированы в новое место (я понял это, добавив операторы журнала в конструкторы копирования).
Однако при использовании reserve() этого не происходит, как ожидалось! у меня есть следующие вопросы
- Обязательно ли всегда использовать оператор резерва?
- Выполняет ли vector перераспределение каждый раз, когда я выполняю push_back; или это происходит из-за отладки?
vClass1.push_back(Class1());без выделения памяти в куче. - person doublep   schedule 28.04.2010