首页  >  文章  >  后端开发  >  如何在 C 11 及更高版本中使用基于范围的 for 循环来迭代 std::map?

如何在 C 11 及更高版本中使用基于范围的 for 循环来迭代 std::map?

Barbara Streisand
Barbara Streisand原创
2024-10-27 17:34:31326浏览

How do I iterate through a std::map using range-based for loops in C  11 and later?

使用 std::map 的基于范围的 for() 循环

在 C 11 及更高版本中,基于范围的 for() 循环提供了一种迭代容器的便捷方法。当迭代向量等简单容器时,每个元素都可以作为循环变量轻松访问。然而,对于诸如地图之类的复杂容器,理解循环变量的类型变得至关重要。

考虑以下代码片段:

<code class="cpp">std::map<foo, bar> testing = { /*...blah...*/ };
for (auto abc : testing)
{
    std::cout << abc << std::endl;
    std::cout << abc->first << std::endl;
}</code>

在这种情况下,每个元素都是一个 std: :map::value_type,本质上是一个 std::pair。这意味着:

对于 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 以获取值的只读视图。

以上是如何在 C 11 及更高版本中使用基于范围的 for 循环来迭代 std::map?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn