본문 바로가기
프로그래밍 언어/C++

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

by 규봉봉이 2024. 7. 23.

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

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

 

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

 

배열

#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;
}

 

주의사항

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

'프로그래밍 언어 > C++' 카테고리의 다른 글

사용자 정의 리터럴(literal)  (1) 2024.07.23
std::tie  (1) 2024.07.23
생성자 이니셜라이저(initializer list)  (0) 2024.07.23
std::signal  (0) 2024.07.16
std::bind(), std::function(), std::placeholder  (0) 2023.12.28