Выделить память для вектора

Может ли кто-нибудь дать мне пример того, как выделить память для вектора? Несколько строк - это все, что мне нужно. У меня есть вектор, который принимает 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;