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 个或更多元素的最大值。 似乎一切正常,但我不确定它们是否有效。
我想知道它是否有效。如果没有,它是如何失败的以及为什么。
我使用了一组非常重的警告,从来没有报告过“警告:可能错误地使用了初始化列表”等等。
最佳答案
The answers to this question imply that using an initializer list in a loop or with "unknown data" wouldn't work.
由于遗漏了一个词,这是对所说内容的误解。 The statement you're talking about是对这条评论的回应:
How would you make this work if the data is generated in a loop, or the number of data changes at runtime?
添加了强调。所以当对方说:
If the data changes at runtime, ...
回复只是省略了“数字”部分,因为它是对先前评论的直接回复。
Braced-init-lists 可以包含任意数量的项目,但列表中的项目数量必须在编译时定义。
关于c++ - 在循环中使用初始化列表是否有效?如果没有,它是如何失败的,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58885496/