迭代 C 中的嵌套映射
考虑一个场景,其中您在 C 中有一个嵌套映射。具体来说,您的映射是 std::map<:string>>。此映射结构包含如下数据:
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中文网其他相关文章!