在循环中使用初始化列表是否可行?如果不是,它将如何失败?为什么?

this question的回答表明,在循环中使用初始化列表或使用“未知数据”将不起作用。他们没有说为什么,或者怎么会失败。

IE,这样做:(这是一个无意义的操作,但是表明列表的内容会随着循环的进行而改变)

std::vector<float> vec;
// Assume vec is filled with some useful data

for(int i = 0; i < 10; i++) 
{ 
  for(int j = 0; j < 10; j++) 
  {
    for(int k = 0; k < 10; k++) 
    {
      result = std::max({vec[i],vec[j],vec[k]});
      // do something with result...
    }
  }
}

我有一些代码使用初始化列表非常频繁地获取最多3个或更多元素。看起来好像一切正​​常,但我不确定它们是否有效。

我想知道它是否有效。如果没有,那么它如何失败以及为什么。

我使用了非常多的警告,没有任何报告“警告:可能未正确使用初始化列表”或类似的警告。

lovepiaohan 回答:在循环中使用初始化列表是否可行?如果不是,它将如何失败?为什么?

  

此问题的答案表明,在循环中使用初始化列表或使用“未知数据”将不起作用。

由于省略了一个单词,这是对所说内容的误解。 The statement you're talking about是对此评论的回应:

  

如果数据是循环生成的,或者运行时数据更改的数量,您将如何进行这项工作?

已添加重点。所以当那个人说:

  

如果数据在运行时发生更改,...

答复只是省略了“数字”部分,因为它是对先前评论的直接答复。

Braced-init-list可以包含任意数量的项目,但是列表 中的项目数量必须在编译时定义。

本文链接:https://www.f2er.com/3092260.html

大家都在问