📜  c++ 中不允许可变大小的数组吗? - C++ (1)

📅  最后修改于: 2023-12-03 14:59:48.251000             🧑  作者: Mango

在C++中,可变大小的数组是不允许的。C++中的数组是静态分配的,也就是说在编译时或运行前,数组的大小必须是已知的并且固定的。

如果需要处理可变大小的数据集合,可以使用其他数据结构,如向量(vector)或动态分配的数组。下面给出了一些关于使用向量和动态分配数组的示例代码。

使用向量(vector)

在C++中,向量是一个动态数组容器,可以自动调整其大小以适应存储的元素数量。通过包含 <vector> 头文件,就可以使用向量。下面是一些使用向量的示例代码:

#include <vector>
#include <iostream>

int main() {
  std::vector<int> numbers; // 声明一个整数类型的向量

  // 向向量中添加元素
  numbers.push_back(10);
  numbers.push_back(20);
  numbers.push_back(30);

  // 使用下标访问向量中的元素
  std::cout << "元素1:" << numbers[0] << std::endl;
  std::cout << "元素2:" << numbers[1] << std::endl;
  std::cout << "元素3:" << numbers[2] << std::endl;

  // 使用迭代器遍历向量中的元素
  std::cout << "向量元素:";
  for (std::vector<int>::iterator it = numbers.begin(); it != numbers.end(); ++it) {
    std::cout << *it << " ";
  }
  std::cout << std::endl;

  return 0;
}
使用动态分配数组

C++还可以使用 new 运算符动态分配数组,使其大小可以在运行时确定。下面是一个使用动态分配数组的示例代码:

#include <iostream>

int main() {
  int size;

  std::cout << "输入数组大小:";
  std::cin >> size;

  int* numbers = new int[size]; // 动态分配数组

  // 向数组中赋值
  for (int i = 0; i < size; ++i) {
    std::cout << "输入元素" << i+1 << ":";
    std::cin >> numbers[i];
  }

  // 输出数组元素
  std::cout << "数组元素:";
  for (int i = 0; i < size; ++i) {
    std::cout << numbers[i] << " ";
  }
  std::cout << std::endl;

  delete[] numbers; // 释放动态分配的数组内存

  return 0;
}

以上是关于在C++中不允许可变大小数组的介绍,同时给出了使用向量和动态分配数组的示例代码。这些方法可以在处理可变大小的数据时提供更灵活的解决方案。