[英]C++ iterate over vector of pairs with destructuring
我遇到了以下代码:
vector<pair<int, int>> vec;
//...
for (auto &[f, s] : vec)
{
//do something with f and s
}
这个语法是如何工作的( [f, s] : vec ),以及它引入了什么标准? 我可以用它从任何结构/类中获取字段值还是它特定于元组/对?
另外,这种方法的性能影响是什么?
在 C++11 中,我以下列方式使用 auto:
for (auto &it : vec)
{
//do something with it.first and it.second
}
您在此处看到的是结构化绑定。 有关此功能的完整说明,请参阅https://en.cppreference.com/w/cpp/language/structured_binding 。 C++17 中引入了结构化绑定。 它们提供了一种新语法来为类型的成员提供标识符。
通常,您也可以对自己的类型使用结构化绑定,但这需要更多的努力。 默认情况下,支持数组、类似元组的对象和聚合。
结构化绑定是您正在寻找的,否则您可以
template <typename T, typename N>
struct pair
{
T first;
N second;
};
并以 C 方式迭代,假设您的类型可以被复制、移动、分配等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.