我在这里找到了*C++结构化绑定的原始提议.它提出了一种轻松绑定多个返回值的方法,即:
auto {a, b} = minmax(data);
Run Code Online (Sandbox Code Playgroud)
但现在我看到每个人都指向C++ 17/C++ 1z提议语法
auto [a, b] = minmax(data);
Run Code Online (Sandbox Code Playgroud)
既然我已经学会了"列表被编写{like,this}",那么会出现一个新的列表语法?为什么?花括号有什么问题?
我遇到了以下代码:
vector<pair<int, int>> vec;
//...
for (auto &[f, s] : vec)
{
//do something with f and s
}
Run Code Online (Sandbox Code Playgroud)
这个语法是如何工作的([f, s] : vec),以及它引入了什么标准?我可以用它从任何结构/类中获取字段值还是它特定于元组/对?
另外,这种方法的性能影响是什么?
在 C++11 中,我以下列方式使用 auto:
for (auto &it : vec)
{
//do something with it.first and it.second
}
Run Code Online (Sandbox Code Playgroud)