我如何在C中循环 std::map
?我的 Map 定义为:
std::map< std::string, std::map<std::string, std::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";
如何循环浏览此 Map 并访问各种值?
7 回答
map是const时使用
std::map< std::string, std::map<std::string, std::string> >::const_iterator
.您可以使用迭代器 .
做这样的事情:
旧问题,但剩下的答案从C 11开始已过时 - 您可以使用ranged based for loop并简单地执行:
这应该比早期版本更清晰,并避免不必要的副本 .
有人赞成用引用变量的明确定义替换注释(如果未使用则会被优化掉):
或者在C 0x中更好:
C 11:
输出:
在C 17中,您将能够使用“结构化绑定”功能,该功能允许您使用单个元组/对来定义具有不同名称的多个变量 . 例:
original proposal(由杰出人物Bjarne Stroustrup,Herb Sutter和Gabriel Dos Reis编写)很有趣(建议的语法更直观恕我直言);还有proposed wording for the standard无聊阅读但更接近实际进入的内容 .