为矢量分配内存

Pra*_*van 18 c++ vector

有人能给我一个如何为矢量分配内存的例子吗?我需要几条线.我有一个接收20-30个元素的向量..但当我尝试cout它并编译它我只得到前几个条目..

Fré*_*idi 56

一个标准::矢量管理它自己的内存.您可以使用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.
Run Code Online (Sandbox Code Playgroud)

  • 为了完成本文,`resize()`添加使用其默认构造函数构造的元素(即,如果类型为`Elem`,则`Elem()`) (3认同)
  • @swegi,默认情况下,是的。`resize()` 还可以采用第二个参数,该参数将被复制到所有新元素中。 (2认同)
  • @c650如果你知道会有多少个项目并且这个数量不小,那么最好分配足够的空间。 (2认同)
  • 在C ++ 11中,您可以只在构造函数中传递count:`std :: vector &lt;int&gt;(1000)`。 (2认同)

Sim*_*hes 7

看看这个 你用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;
Run Code Online (Sandbox Code Playgroud)