在 C 中使用基于范围的 for() 循环与标准库容器(例如std::map,理解结果变量类型至关重要。本文深入研究了基于范围的循环中映射的复杂性,提供了对预期结果的见解。
通常,带有 std::vector 等容器的基于范围的 for() 循环授予对每个元素的直接访问权限价值。然而,对于像 std::map 这样的容器,情况会变得更加微妙。
对于 std::map 来说,基于范围的 for() 中的变量(例如示例中的 abc) Loop 的类型为map
从 abc 访问键和值需要额外的步骤。在 C 17 及更高版本中,解构的基于范围的循环允许直接访问键和值:
<code class="cpp">for (auto& [key, value]: myMap) { std::cout << key << " has value " << value << std::endl; }</code>
或者,您可以在 C 11 和 C 14 中使用传统的基于范围的循环:
<code class="cpp">for (const auto& kv : myMap) { std::cout << kv.first << " has value " << kv.second << std::endl; }</code>
通过手动分解每个键值对,您可以访问键和值。此外,将 kv 变量标记为 const 可以提供值的只读视图。
使用 std::map 了解 value_type 和基于范围的 for() 循环的细微差别对于有效使用至关重要。这些知识使您能够清晰、高效地访问和操作键值对。
以上是基于范围的 For() 循环行为与 C 中的 std::map 有何不同?的详细内容。更多信息请关注PHP中文网其他相关文章!