有人能给我举一个为向量分配内存的例子吗?几行就足够了。 我有一个容纳20-30个元素的向量..但是当我尝试使用cout并编译它时,我只得到了前几个条目。
可以使用以下代码为向量分配内存: ``` std::vector vec; vec.reserve(30); // 分配30个int类型的元素空间 ``` 使用`reserve()`函数预留空间可以避免在向量中添加元素时频繁地重新分配内存,并提高了性能。有人能给我举一个为向量分配内存的例子吗?几行就足够了。 我有一个容纳20-30个元素的向量..但是当我尝试使用cout并编译它时,我只得到了前几个条目。
可以使用以下代码为向量分配内存: ``` std::vector vec; vec.reserve(30); // 分配30个int类型的元素空间 ``` 使用`reserve()`函数预留空间可以避免在向量中添加元素时频繁地重新分配内存,并提高了性能。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.
resize()
函数会添加使用默认构造函数构造的元素(例如,如果类型是 Elem
,则添加的是 Elem()
)。 - swegiresize()
函数还可以接受第二个参数,该参数将被复制到所有新元素中。 - Frédéric Hamidi.push_back()
,你需要重新分配/调整大小吗? - Charlesstd::vector<int>(1000)
。 - Shital Shah请看这里。
使用list.reserve(n);。
Vector会自动管理内存,你不需要使用reserve()。只有当你已经知道vector列表需要多大时,它才真正起到性能优化的作用。
例如:
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;