C循环遍历地图

新手上路,请多包涵

我想遍历 map<string, int> 中的每个元素,而不知道它的任何 string-int 值或键。

到目前为止我所拥有的:

 void output(map<string, int> table)
{
       map<string, int>::iterator it;
       for (it = table.begin(); it != table.end(); it++)
       {
            //How do I access each element?
       }
}

原文由 NoName 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 625
2 个回答

您可以通过以下方式实现此目的:

 map<string, int>::iterator it;

for (it = symbolTable.begin(); it != symbolTable.end(); it++)
{
    std::cout << it->first    // string (key)
              << ':'
              << it->second   // string's value
              << std::endl;
}


使用 _C++11_(及更高版本) ,

 for (auto const& x : symbolTable)
{
    std::cout << x.first  // string (key)
              << ':'
              << x.second // string's value
              << std::endl;
}


使用 _C++17_(及更高版本) ,

 for (auto const& [key, val] : symbolTable)
{
    std::cout << key        // string (key)
              << ':'
              << val        // string's value
              << std::endl;
}

原文由 P0W 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果您只想迭代内容而不更改值,请执行以下操作:

 for(const auto & variable_name : container_name(//here it is map name)){
    cout << variable_name.first << " : " << variable_name.second << endl;
}

如果你想修改地图的内容,删除 const 并保留 & (如果你想直接修改容器内的内容)。如果要使用容器值的 _副本_,请删除 & 符号;之后,您可以在“variable_name”上使用 .first.second 访问它们。

原文由 Shantanu Ingle 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题