代码之家  ›  专栏  ›  技术社区  ›  user4689277

在没有向量、指针[closed]的情况下,在运行时增加c++中的数组大小

  •  0
  • user4689277  · 技术社区  · 10 年前

    我在c++中声明了一个具有一定大小的int数组。 例如,int a[6]

    在运行时,如果我的数组大小超过6,那么我需要增加它。

    我不打算使用指针、向量和用户不会给出的大小。

    2 回复  |  直到 10 年前
        1
  •  4
  •   Paolo M    10 年前

    C数组在编译时静态解析,因此无法在运行时调整大小。

    如果您不想使用 std::vector , malloc new ,还有另一个选项:声明一个“足够大”的数组,然后在另一个变量中保存使用的元素数。例如。:

    int a[big_enough];
    size_t a_size = 0;
    

    但我的建议是 std::vector ! 例如。:

    std::vector<int> a(6);
    

    初始化向量6 int s等于 0 .

    如果需要更改其值,可以使用

    a[i] = 3;
    

    哪里 i 是介于之间的整数 0 5 (即 a.size() ).

    顺便说一句,通常您不想显式设置向量大小。将其声明为空,然后逐个添加元素。例如:

    std::vector<int> a;
    a.push_back(-3);
    
        2
  •  1
  •   Rahul Tripathi    10 年前

    您不能在运行时更改阵列的大小。另一种方法是创建一个比现有阵列更大的新阵列。将现有阵列的元素复制到新阵列并删除现有阵列。并更改成员变量、ptr和大小。

    类似于:

    int* newArray = new int[sizeOfArray];
    std::copy(oldArray, oldArray + std::min(sizeofOldArray, sizeOfArray), newArray);
    delete[] oldArray;
    oldArray = newArray;
    

    最好是使用 std::vector