首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C++中正确使用for-range语句语法?

如何在C++中正确使用for-range语句语法?
EN

Stack Overflow用户
提问于 2021-09-17 15:59:05
回答 1查看 99关注 0票数 2
代码语言:javascript
复制
iteration-statement:
    while ( condition ) statement
    do statement while ( expression ) ;
    for ( init-statement conditionopt ; expressionopt ) statement
    for ( init-statementopt for-range-declaration : for-range-initializer ) statement
for-range-declaration:
    attribute-specifier-seqopt decl-specifier-seq declarator
    attribute-specifier-seqopt decl-specifier-seq ref-qualifieropt [ identifier-list ]
for-range-initializer:
    expr-or-braced-init-list

上述语法是由C++ISO提供的。我已经看到了大量使用经典方法进行范围声明的例子:

代码语言:javascript
复制
#include <iostream>
using namespace std;
int main() {
    int a[5] = { 1,2,3,4,5 };
    for (int i : a) { cout << i << endl; }
}

但我找不到如何使用for-range-declaration作为attribute-specifier-seqopt decl-specifier-seq ref-qualifieropt [ identifier-list ]。在这种情况下它是如何工作的?你能举个例子吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-17 16:32:33

语法的这一部分

代码语言:javascript
复制
attribute-specifier-seqopt decl-specifier-seq ref-qualifieropt [ identifier-list ]

允许循环中的结构化绑定。你可以这样做:

代码语言:javascript
复制
struct S { int i,j; };
std::vector<S> v;
for (auto [a, b] : v)
  // ... a and b simply refer to i and j

注意,identifier-list表示名称ab只是指结构的成员。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69226393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档