Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengulangi Dengan Cekap Melalui Peta Bersarang dalam C ?

Bagaimana untuk Mengulangi Dengan Cekap Melalui Peta Bersarang dalam C ?

Patricia Arquette
Patricia Arquetteasal
2024-12-03 02:08:10342semak imbas

How to Efficiently Iterate Through Nested Maps in C  ?

Lelaran melalui Peta Bersarang dalam C

Pertimbangkan senario di mana anda mempunyai peta bersarang dalam C . Khususnya, peta anda ialah std::map>. Struktur peta ini menyimpan data seperti ini:

m["name1"]["value1"] = "data1";
m["name1"]["value2"] = "data2";
m["name2"]["value1"] = "data1";
m["name2"]["value2"] = "data2";
m["name3"]["value1"] = "data1";
m["name3"]["value2"] = "data2";

Untuk mengulangi peta bersarang ini dengan berkesan dan mengakses pelbagai nilai, anda boleh menggunakan teknik berikut:

Menggunakan C 11 Ranged untuk Gelung:

Dengan C 11, anda boleh menggunakan berasaskan julat untuk gelung ke memudahkan proses lelaran. Pendekatan ini mengelakkan salinan yang tidak diperlukan dan menyediakan sintaks yang ringkas.

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

Menggunakan Definisi Eksplisit Pembolehubah Rujukan:

Sebagai alternatif, anda boleh meningkatkan kebolehbacaan dengan mentakrifkan pembolehubah rujukan secara eksplisit untuk kunci dan nilai. Walaupun pendekatan ini menghasilkan lebih banyak kod, ia secara eksplisit mentakrifkan pembolehubah untuk kejelasan yang lebih baik.

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

Menggunakan Pengikatan Berstruktur dalam C 17:

Dalam C 17, pengikatan berstruktur menawarkan kaedah yang lebih ringkas dan padat untuk berulang melalui bersarang peta.

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

Atas ialah kandungan terperinci Bagaimana untuk Mengulangi Dengan Cekap Melalui Peta Bersarang dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn