【问题标题】:How can I create an array in C++ with its lenght equals to user input? [duplicate]如何在 C++ 中创建一个长度等于用户输入的数组? [复制]
【发布时间】:2023-03-13 17:35:01
【问题描述】:

我知道我不能像这样创建数组:

int main () {
    int length;
    std::cin >> length;
    int array [length] = {};
}

有什么办法可以做到吗?

【问题讨论】:

  • 你可以为一些编译器做到这一点
  • 它是 c++,使用向量
  • 并对变量名进行拼写检查!
  • 对不起!!!我不是母语人士...

标签: c++ arrays


【解决方案1】:

使用向量:

std::vector<int> arr(length);

这将包含length value-initialized int's。

【讨论】:

    【解决方案2】:

    使用矢量

    #include <vector>
    
    int main() {
      int length;
      std::cin >> length;
      std::vector<int> dynamic_array(length); 
    }
    

    【讨论】:

      【解决方案3】:

      有多种选择。你可以使用std::vector这样的STL容器:

      int lenght;
      std::cin >> length;
      std::vector<int> arr(length);
      

      或者你可以动态分配内存:

      int* arr = new int[length];
      

      【讨论】:

      • 在这种情况下通过使用std::vector 确实也可以动态分配内存。
      • std::array&lt;int, length&gt; 不起作用。长度是模板参数,因此必须是编译时间常数。 std::array&lt;int, 5&gt; 是与 std::array&lt;int, 6&gt; 完全不同的类型。将其隐藏在 shared_ptr 中并不会消除这种情况(即使有效也没有多大意义)。
      • 好点,感谢指正。
      猜你喜欢
      • 2015-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多