【问题标题】:What is the 'auto' specifier extracting here? [duplicate]此处提取的 \'auto\' 说明符是什么? [复制]
【发布时间】:2023-01-04 15:33:14
【问题描述】:

假设我们有一个std::queue<std::pair<int, int> >

要提取一对,我们可以这样做:

int r = q.front().first;
int c = q.front().second;

要么

auto [rr, cc] = q.front();

其中 rrcc 可以被视为常规 int

我以前从未遇到过这种类型的语法。标准对此有何规定?提取的 auto 说明符是什么?

auto p = q.front();

只是一个普通的std::pair

【问题讨论】:

  • 这在 good c++ book 和各种 SO 帖子中进行了解释。参考how to ask第一步是“搜索然后研究”.
  • 你是这个网站上最不愉快的人@JasonLiam。如果不问这个问题,我就不知道要搜索“结构化绑定”。

标签: c++


【解决方案1】:

它是结构化绑定,自 C++17 起可用。

延伸阅读:https://en.cppreference.com/w/cpp/language/structured_binding

另一个有用的地方是,例如,遍历地图。绑定变量可以通过在前面加上 & 来引用。

#include <map>
#include <iostream>

int main() {
    std::map<int, int> m { {1, 4}, {3, 7}, {4, 9} };

    for (auto &[k, v] : m) {
        std::cout << k << ": " << v << std::endl;
    }

    return 0;
}

【讨论】:

    猜你喜欢
    • 2013-08-11
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    相关资源
    最近更新 更多