Published 2021. 7. 21. 11:27

https://en.cppreference.com/w/cpp/language/structured_binding

 

Structured binding declaration (since C++17) - cppreference.com

Binds the specified names to subobjects or elements of the initializer. Like a reference, a structured binding is an alias to an existing object. Unlike a reference, a structured binding does not have to be of a reference type. attr(optional) cv-auto ref-q

en.cppreference.com

Structured binding은 C++17부터 추가된 문법이다. 

구조체에 있는 멤버 변수들을 모두 가져올 때, 매우 편리하게 사용할 수 있다.

사용법은 auto [변수명, 변수명,...] = 구조체; 로 사용할 수 있다.

가장 간단한 예로 들자면 아래와 같이 pair을 바로 변수 a,b에 넣을 수 있다.

#include <iostream>

using namespace std;

int main() {
    pair<int, int> p = {1, 2};
    auto [a, b] = p;
    cout << a << b << endl; //12
}

 

아래와 같이 map에서 for문과 함께 사용한다면 매우 편하게 map을 순회할 수 있다.

#include <iostream>
#include <map>

using namespace std;

int main() {
    map<int, int> m;
    m[1] = 3;
    m[2] = 6;
    m[3] = 9;
    for (const auto &[key, value] : m) {
        cout << "(" << key << ", " << value << ")" << endl;
    }
//(1, 3)
//(2, 6)
//(3, 9)
}

 

 

복사했습니다!