【问题标题】:Why I could not assign value and display element of list?为什么我无法分配列表的值和显示元素?
【发布时间】:2022-01-07 13:25:47
【问题描述】:
int Square(int lenght)
{
std::vector < int > square(lenght);
for(int counter :square)
    square[counter] = counter * counter ;

for(int counter : square){
    printf("%d",square[counter]);
        cout<<""<<endl;
}

你好

如您所见,我在 cpp 中有基础代码块。我尝试使用 for 循环使 Range-loop 总是从终端尴尬地取“0”。如何填写平方值?技术上存在什么问题,或者在类似情况下您有什么建议?

【问题讨论】:

  • 你有一个长度元素的向量,所有元素都用 0 填充。你取每一个 0,然后将它自身相乘得到 0,然后将元素 square[0] 设置为 0 的次数为长度。
  • 这也是对副本的全部完成。它只是一个零。 OP 根本不知道基于范围的 for 循环是如何工作的。
  • 正确!为什么我不放在向量里面?
  • for (int i=0; i &lt; length; ++i) { square[i] = i * i;};
  • @drescherjm 为什么我使用矢量表示。有什么区别?如果我使用标准循环用法。我说它在技术上可行吗?

标签: c++ list arraylist vector


【解决方案1】:
for(int counter :square)

这里您使用基于范围的 for 循环。这意味着在每一步计数器中都会通过元素而不是索引。如果你想使用索引,你应该使用标准的 for 循环:

for (int counter = 0; counter < length; ++counter)

【讨论】:

  • 我知道了。我已经知道循环使用的标准。如果我需要使用基于范围的循环功能来解决问题
  • @01d 你到底想做什么?对数组中的每个元素求平方?它们用零填充,所以你要做的就是再次获得零。但是,如果您的数组中填充了一些数字,那么使用基于范围的循环的正确方法是:for(int &amp;element: square) element = element * element;。然后你打印这样的元素:for(int element: square) std::cout &lt;&lt; element &lt;&lt; " ";
【解决方案2】:

你不能像那样使用范围循环。 range 循环遍历向量中的每个元素,并为循环中的左侧变量分配元素的值。 例如。您的输出代码应如下所示:

for(auto const& val: square){
    std::cout<<val<<std::endl;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 2022-10-15
    • 2019-09-20
    • 2023-01-17
    • 1970-01-01
    • 2021-02-15
    相关资源
    最近更新 更多