Выделить память для вектора
Может ли кто-нибудь дать мне пример того, как выделить память для вектора? Несколько строк - это все, что мне нужно.
У меня есть вектор, который принимает 20-30 элементов. Но когда я пытаюсь отключить его и скомпилировать, я получаю только первые две записи.
Ответы
Ответ 1
std::vector управляет собственной памятью. Вы можете использовать reserve() и изменить размер() методов чтобы он выделял достаточное количество памяти для установки определенного количества элементов:
std::vector<int> vec1;
vec1.reserve(30); // Allocate space for 30 items, but vec1 is still empty.
std::vector<int> vec2;
vec2.resize(30); // Allocate space for 30 items, and vec2 now contains 30 items.
Ответ 2
Посмотрите
Вы используете list.reserve(n);
Вектор заботится о своей памяти, и вам не нужно вообще использовать backup(). Его единственное действительно улучшение производительности, если вы уже знаете, насколько велик список векторов.
Например:
std::vector<int> v;
v.reserve(110); // Not required, but improves initial loading performance
// Fill it with data
for(int n=0;n < 100; n++)
v.push_back(n);
// Display the data
std::vector<int>::iterator it;
for(it = v.begin(); it != v.end(); ++it)
cout << *it;