推送数组C ++?

时间:2010-09-01 09:04:31

标签: c++ arrays

如何动态地向数组添加值(推送)?我可以在AS3中这样做,但我在C ++中找不到它的功能。

4 个答案:

答案 0 :(得分:8)

如果它是静态定义的数组,则不能这样:

int array[10];

它的大小是固定的。但是,如果您使用std::vector之类的容器,则使用:

std::vector::push_back()

答案 1 :(得分:6)

无法在静态分配的经典C风格数组中“推送”,并且实现自己的'方法'来动态重新分配数组不是一个好主意,这已在STL中为您完成,您可以使用vector

#include <vector>
// ...
std::vector<int> vect;
vect.push_back(1);
vect.size(); // --> 1
vect.push_back(2);
vect.size(); // --> 2
// ...

答案 2 :(得分:1)

使用std :: vector。你不能推入C风格的数组,例如INT []。

答案 3 :(得分:1)

假设你的意思不是std::vector<>,你显然会使用std::vector<>::push_back(),而是一个实际的数组,那么你需要知道

  1. 阵列末尾是否至少有一个未使用的插槽?
  2. 是吗?然后将值放在第一个未使用的插槽中。 否?为新阵列分配内存,该阵列至少是之前的大小加上您想要的任何数量的其他插槽,在那里复制旧值并添加新值。
  3. 上述当然意味着您知道上次使用的插槽所在的可用内存中的位置。

    这就是std::vector<>的用途,你知道。