> 백엔드 개발 > C++ > C에서 중첩 맵을 효율적으로 반복하는 방법은 무엇입니까?

C에서 중첩 맵을 효율적으로 반복하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-03 02:08:10
원래의
395명이 탐색했습니다.

How to Efficiently Iterate Through Nested Maps in C  ?

C에서 중첩 맵을 통해 반복

C에서 중첩 맵이 있는 시나리오를 생각해 보세요. 특히 맵은 std::map>입니다. 이 맵 구조는 다음과 같은 데이터를 보유합니다.

m["name1"]["value1"] = "data1";
m["name1"]["value2"] = "data2";
m["name2"]["value1"] = "data1";
m["name2"]["value2"] = "data2";
m["name3"]["value1"] = "data1";
m["name3"]["value2"] = "data2";
로그인 후 복사

이 중첩 맵을 효과적으로 반복하고 다양한 값에 액세스하려면 다음 기술을 활용할 수 있습니다.

C 11 Ranged 사용 for 루프:

C 11을 사용하면 범위 기반 for 루프를 사용하여 반복 프로세스. 이 접근 방식은 불필요한 복사를 방지하고 간결한 구문을 제공합니다.

std::map<std::string, std::map<std::string, std::string>> mymap;

for (auto const &ent1 : mymap) {
  // ent1.first is the first key
  for (auto const &ent2 : ent1.second) {
    // ent2.first is the second key
    // ent2.second is the data
  }
}
로그인 후 복사

참조 변수의 명시적 정의 사용:

또는 참조 변수를 명시적으로 정의하여 가독성을 높일 수 있습니다. 키와 값에 대해. 이 접근 방식은 더 많은 코드를 생성하지만 명확성을 높이기 위해 변수를 명시적으로 정의합니다.

for (auto const &ent1 : mymap) {
  auto const &outer_key = ent1.first;
  auto const &inner_map = ent1.second;
  for (auto const &ent2 : inner_map) {
    auto const &inner_key = ent2.first;
    auto const &inner_value = ent2.second;
  }
}
로그인 후 복사

C 17에서 구조적 바인딩 사용:

C 17에서 구조적 바인딩은 다음을 제공합니다. 중첩된 맵을 반복하는 더욱 간단하고 간결한 방법입니다.

for (auto const &[outer_key, inner_map] : mymap) {
  for (auto const &[inner_key, inner_value] : inner_map) {
    // Access outer_key, inner_key and inner_value directly
  }
}
로그인 후 복사

위 내용은 C에서 중첩 맵을 효율적으로 반복하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿