代码之家  ›  专栏  ›  技术社区  ›  Greg Treleaven

推一个数组C++?

  •  2
  • Greg Treleaven  · 技术社区  · 16 年前

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

    4 回复  |  直到 10 年前
        1
  •  8
  •   Glen Selle Kashif    10 年前

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

    int array[10];
    

    它的大小是固定的。但是,如果使用诸如 std::vector 你会用:

    std::vector::push_back()
    
        2
  •  6
  •   Cedric H.    16 年前

    在静态分配的经典C样式数组中“push”是不可能的,实现您自己的“method”来动态重新分配数组也不是一个好主意,在STL中已经为您完成了这项工作,您可以使用 vector :

    #include <vector>
    // ...
    std::vector<int> vect;
    vect.push_back(1);
    vect.size(); // --> 1
    vect.push_back(2);
    vect.size(); // --> 2
    // ...
    
        3
  •  1
  •   celavek    16 年前

    使用std::vector。不能推入C样式数组,例如int[]。

        4
  •  1
  •   Johann Gerell    16 年前

    假设你不是指 std::vector<> ,你显然会使用 std::vector<>::push_back() ,但是实际的数组,那么您需要知道

    1. 阵列末尾是否至少有一个未使用的插槽?
    2. 对? 然后将该值放在第一个未使用的槽中。 不? 为一个新数组分配内存,该数组的大小至少为前一个数组的大小加上所需的任何数量的额外插槽,将旧值复制到该数组上并添加新值。

    当然,上面的内容意味着您知道最后使用的插槽在可用内存中的位置。

    这是什么 标准::矢量<> 是为了,你知道。