0Pricing
C++ Academy · 강의

구조적 바인딩과 if-init C++17

구조적 바인딩으로 튜플과 쌍을 분해하고 if-init 문을 사용합니다.

구조적 바인딩과 if-init C++17은(는) CoddyKit의 무료 C++ Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C++ Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C++ Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

현대 C++의 구조 분해

C++17에는 튜플, 쌍, 배열 및 집계형을 개별 이름 있는 변수로 풀어내는 깔끔한 방법인 구조적 바인딩이 추가되었습니다.

기본 형태

auto [a, b, ...]를 사용하면 오른쪽 값의 각 부분에 연결된 변수를 선언할 수 있습니다.

std::pair<std::string, int> p = {"Ada", 30};
auto [name, age] = p;
std::cout << name << " is " << age;

맵 순회 바인딩

가장 깔끔하게 개선되는 부분은 맵 순회입니다. 이제 it.first와 it.second를 사용할 필요가 없습니다.

std::map<std::string, int> ages = {{"Ada",30},{"Bob",24}};
for (const auto& [name, age] : ages) {
    std::cout << name << " " << age << "\n";
}

참조 바인딩

auto&를 사용하면 참조로 바인딩할 수 있습니다. 바인딩된 이름을 수정하면 기반 객체가 변경됩니다.

std::pair<int, int> p = {1, 2};
auto& [a, b] = p;
a = 99;
std::cout << p.first;   // 99

const 바인딩

복사하지 않고 읽기 전용으로 구조를 분해하려면 const auto&를 사용하십시오.

for (const auto& [key, value] : map) {
    // read only
}

배열과 튜플 바인딩

C 배열과 std::tuple을 포함하여 튜플과 유사한 인터페이스를 지원하는 모든 형에서 작동합니다.

int arr[3] = {1, 2, 3};
auto [x, y, z] = arr;

std::tuple<int, std::string, double> t = {1, "hi", 3.14};
auto [a, s, d] = t;

일반 구조체 바인딩

멤버가 public인 모든 구조체를 구조 분해할 수 있습니다. 이름은 선언 순서에 따라 추론됩니다.

struct Point { int x; int y; };
Point pt{3, 4};
auto [x, y] = pt;
std::cout << x << ", " << y;

if-init 문

C++17에는 if와 switch를 위한 초기화 문도 추가되었습니다. 헤더 안에서 임시 변수를 선언하면 해당 변수의 범위는 if 또는 switch 본문이 됩니다.

if (auto it = map.find("Ada"); it != map.end()) {
    std::cout << it->second;
} else {
    std::cout << "not found";
}

두 기능 결합하기

바인딩과 if-init을 함께 사용하면 우아한 코드를 작성할 수 있습니다.

if (auto [it, inserted] = m.insert({"key", 42}); inserted) {
    std::cout << "added";
} else {
    std::cout << "already present";
}

바인딩의 수명

바인딩은 기반 익명 변수의 하위 객체를 참조합니다. 바인딩은 바깥쪽 범위가 끝날 때까지, 즉 일반 지역 변수와 같은 수명 동안 유지됩니다.

NOT 바인딩을 사용하지 말아야 할 때

멤버 이름에 담긴 의미를 바인딩 이름이 잃게 된다면 명시적인 멤버 접근을 선호하십시오. 간결함보다 가독성이 중요합니다.

빠른 확인

각 쌍의 이름 있는 부분을 사용하여 std::map을 순회할 수 있게 해 주는 C++17 기능은 무엇인가요?

복습

구조적 바인딩은 쌍, 튜플, 배열 및 구조체를 이름 있는 변수로 분해합니다. C++17의 if-init 문과 결합하면 순회 및 조회 코드를 훨씬 깔끔하게 만들 수 있습니다.

자주 묻는 질문

“구조적 바인딩과 if-init C++17” 강의는 무료인가요?

네 — “구조적 바인딩과 if-init C++17” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C++ Academy 강의 전체를 잠금 해제할 수 있습니다. C++ Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“구조적 바인딩과 if-init C++17”에서 뭘 배우나요?

구조적 바인딩으로 튜플과 쌍을 분해하고 if-init 문을 사용합니다. 브라우저에서 직접 실행하는 실습 코드로 C++ Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

C++ Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 C++ Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“구조적 바인딩과 if-init C++17” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 C++ Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 C++ Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. auto, decltype 및 형식 추론
  2. 범위 기반 for, nullptr 및 enum class
  3. 람다 표현식: 캡처, mutable, 제네릭
  4. 구조적 바인딩과 if-init C++17
← C++ Academy(으)로 돌아가기