在不知道数组大小的情况下分配数组中的元素值 在我的高中C++课程中,我们被分配了一个任务来编写一个程序,允许用户输入存储在数组中的值,而不提示用户数组大小。因此,如果用户决定输入1,2,3,数组大小将从未知变为3

在不知道数组大小的情况下分配数组中的元素值 在我的高中C++课程中,我们被分配了一个任务来编写一个程序,允许用户输入存储在数组中的值,而不提示用户数组大小。因此,如果用户决定输入1,2,3,数组大小将从未知变为3,c++,arrays,C++,Arrays,数组大小将从未知变为3 无法更改数组的大小,也无法创建大小未知的数组 但是,如果数组是动态分配的,那么您可以做的是分配另一个较大的数组,并将较小数组的元素复制到较大的数组上。这种数据结构称为可调整大小的数组。标准库有一个实现这种数据结构的容器:std::vector。您可以使用它来实现您的程序。如果允许,请使用std::vector,否则类似的内容可能会有所帮助 #include <cstdlib> #include <iostream> template <ty

数组大小将从未知变为3

无法更改数组的大小,也无法创建大小未知的数组


但是,如果数组是动态分配的,那么您可以做的是分配另一个较大的数组,并将较小数组的元素复制到较大的数组上。这种数据结构称为可调整大小的数组。标准库有一个实现这种数据结构的容器:std::vector。您可以使用它来实现您的程序。

如果允许,请使用std::vector,否则类似的内容可能会有所帮助

#include <cstdlib>
#include <iostream>

template <typename T>
struct list final {
  T* values;
  std::size_t capacity, size;

  list() : values{nullptr}, capacity{0u}, size{0u} {}
  ~list() { std::free(values); }
  void push_back(T value) {
    if (size == capacity) {
      capacity = (capacity + 1) * 2;
      if (void* mem = std::realloc(values, capacity * sizeof(T))) {
        values = reinterpret_cast<T*>(mem);
      } else {
        throw std::bad_alloc();
      }
    }
    values[size++] = value;
  }

  void pop_back() { --size; }
};

int main() {
  list<int> integers;
  for (int i = 0; i < 10; ++i) {
    integers.push_back(i);
  }
  for (int i = 0; i < integers.size; ++i) {
    std::cout << integers.values[i] << std::endl;
  }
}

你的问题是什么?尽管他们很可能不让你使用,你需要这样的东西:我的问题是,如果有任何方法可以在不声明阵列大小的情况下获取未知数量的输入,你可以解释任务允许你使用什么吗?您可以使用标准的库容器吗?你会用指针吗?你能使用新关键字和删除关键字吗?您使用的是什么操作系统?您使用的是什么IDE和编译器?您应该描述程序正在做什么,以使答案有用-但我认为我们不允许使用指针注释使得这种方法无论如何都有问题。