프로그래밍 언어/C++

C++17 구조화된 바인딩(structured bindings)

규봉봉이 2024. 7. 23. 15:38

변수 선언 시에 배열, 튜플, 구조체 등 복합 데이터 구조의 요소를 개별 변수에 쉽게 할당할 수 있도록 합니다.

이를 통해 코드의 가독성과 유지보수성을 향상시킬 수 있습니다.

 

구조화된 바인딩의 사용 예:

 

배열

#include <iostream>
#include <array>

int main() {
    std::array<int, 3> arr = {1, 2, 3};
    auto [x, y, z] = arr;

    std::cout << "x: " << x << ", y: " << y << ", z: " << z << std::endl;
    return 0;
}

 

 

튜플

#include <iostream>
#include <tuple>

std::tuple<int, double, std::string> getTuple() {
    return {1, 3.14, "Hello"};
}

int main() {
    auto [a, b, c] = getTuple();

    std::cout << "a: " << a << ", b: " << b << ", c: " << c << std::endl;
    return 0;
}

 

구조체

#include <iostream>
#include <string>

struct Person {
    std::string name;
    int age;
};

int main() {
    Person p = {"Alice", 30};
    auto [name, age] = p;

    std::cout << "Name: " << name << ", Age: " << age << std::endl;
    return 0;
}

 

주의사항

  • 구조화된 바인딩은 배열, 튜플, 구조체와 같은 특정 데이터 구조에만 사용할 수 있습니다.
  • 분해할 때 요소의 개수와 순서가 정확히 일치해야 합니다. 그렇지 않으면 컴파일 오류가 발생합니다.