【问题标题】:How to get each iteration in a for loop into a list/vector? (C++)如何将 for 循环中的每次迭代转换为列表/向量? (C++)
【发布时间】:2026-01-10 18:00:02
【问题描述】:

我正在尝试取值 N,并创建一个列表/向量,其中包含从 N 到 0(不包括在内)的所有值,然后再次创建 N。

定义N后,我有如下代码:

for (int i = N; i > 0; i--) {
    cout << i << endl;
}

这会巧妙地打印出所需的值。例如,当 N=3 时:

3
2
1
3

问题是我无法操纵这些来计算我想要的(即平均值、范围、最大值和最小值)。所以我需要做的是让每次迭代都将自己放入一个数组中,与上一次迭代放入自己的数组相同。

我在这里 (How to store the result of each iteration of a for loop into an array (Javascript)) 发现了一个类似的问题,除了它是在 javascript 中,这给我带来了一些问题。

为什么以下内容在 C++ 上不起作用,我该如何更改?

var array = []
for (int i = N-1; i < N; i--) {
    array.push(i);
}

同样的事情 int replacint var 也不起作用。

有什么建议吗?

【问题讨论】:

  • 首先,for (int i = N-1; i &lt; N; i--) { cout &lt;&lt; i &lt;&lt; endl; } 不会导致打印3 2 1 3。我建议先运行你的代码,然后问它有什么问题
  • 您的第一个 for 循环会持续半无限期地运行(即,它会一直运行直到达到 INT_MIN,然后 - 这是未定义的行为)。
  • "为什么以下内容在 C++ 上不起作用,我该如何更改?"你不能只是编造语法。在 C++ 中,for (int i = N-1; i &lt; N; i--) 将调用 undefined behaviour。 C++ 不是 Js,反之亦然,它们有非常不同的通用范式和习语,你必须分别学习它们。
  • 代码已编辑为应有的样子,但在我输入 Q 时注意力不集中。

标签: c++ arrays for-loop


【解决方案1】:

首先,这个:var array = [],以及您的其余代码,根本不是c++ 语法,它是纯javascript。您无法将代码从一种语言复制到另一种语言并期望能够正确编译和运行。

为了将所有元素从 N 插入 0,然后再将 N 插入向量,您需要:

  1. 包含向量库:#include &lt;vector&gt;
  2. 启动一个 N 值(来自用户,使用 cin 包括 iostream,例如手动或手动,即 N = 6)
  3. 阅读以下代码,了解如何将所有想要的数字输入到向量here (use push_back)注意:另外,正如@NathanOliver 所提到的,如果您提前知道 N,则可以使用 reverse。在这里寻找simple reference.
  4. 然后,最后手动推送 N (vec.push_back(N))

我真的是对你说,在有人给你完整代码之前,试着自己解决这个问题

【讨论】:

  • 如果您事先知道要获得多少个元素,那么调用 reserve 也会很好。
  • @NathanOliver +1 为此,我添加了它。
最近更新 更多