有人能举例说明如何为矢量分配内存吗?我需要几条线。 我有一个接收20-30个元素的向量..但当我尝试cout它并编译它我只得到前几个条目..
答案 0 :(得分:47)
std::vector管理自己的记忆。您可以使用reserve()和resize()方法让它分配足够的内存以适合给定数量的项目:
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.
答案 1 :(得分:7)
看看this 您使用 list.reserve(n);
Vector会处理它的内存,你根本不需要使用reserve()。如果您已经知道向量列表需要多大,那么它只能提高性能。
例如:
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;