繁体   English   中英

C++ 使用解构迭代对向量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM