【问题标题】:How to print desired amount of elements in an array?如何在数组中打印所需数量的元素?
【发布时间】:2019-04-17 04:16:39
【问题描述】:

如果我想打印带有n 元素数量的single dimensional array。我可以将array 初始化为array[n] 吗?

#include "pch.h"
#include <iostream>

using namespace std;

int main()
{
    int n;

    std::cout << "Please enter the number of elements (n): ";
    std::cin >> n;

    int array[n];

    for (int i = 0; i <= n; i++) {
        std::cin >> array[n];
    }
    return 0; 
}

【问题讨论】:

  • 1) 如果您想开发可移植代码:不,因为 VLA 是非标准 C++(尽管某些编译器扩展支持它们)。 2) 只需使用std::vector
  • 即使您可以在 C++ 中使用 VLA(又名 int array[n]) - 您不能这样做,基于 C++ 的数组索引为零。因此,打印带有n 元素的数组需要从0 迭代到n-1(例如for (int i = 0; i &lt; n; ++i) ...)。循环中的&lt;= 表示循环结束。

标签: c++ arrays for-loop arraylist


【解决方案1】:

在 C++ 中,您不能初始化具有可变长度的数组。无论是你:

  • 动态分配内存

    int *array = new int[n];

    在这种情况下,你不应该忘记稍后释放

    delete[] array;

  • 或者您可以使用std::vector

    std::vector&lt;int&gt; array(n);

    当它退出作用域时将被释放。

其他错误是:

  • for 循环应该是这样的

    for (int i = 0; i &lt; n; i++)

    因为有 n 个元素,数组索引从 0 变为 n - 1。

  • 要读取输入,您可以简单地使用

    std::cin &gt;&gt; array[n]

    您使用&gt;&gt;&lt;&lt; 组合编写的代码无法运行。

【讨论】:

  • 动态拼写为两个 y,而不是一个。
【解决方案2】:

由于与 C99 不同,C++ 不支持可变长度数组 (VLA),因此您必须使用其他一些方法在 C++ 中分配任意大小的内存,例如 std::vector

#include <iostream>

int main()
{
    int n;

    std::cout << "Please enter the number of elements (n): ";
    std::cin >> n;

    std::vector<int> foo(n);

                    // valid indexes range form 0 to size - 1: < n instead of <= n
    for (int i = 0; i < n; ++i)
        std::cin >> foo[i];
}

另外你在for-loop 中混淆了in

std::cin >> array[n] << " ";
                     ^^^^^^

也不行。

【讨论】:

    猜你喜欢
    • 2021-04-07
    • 2015-01-31
    • 2021-03-11
    • 1970-01-01
    • 2019-07-22
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多