【发布时间】:2014-04-15 04:11:31
【问题描述】:
我想在 std::map 中使用 std::set
我对 std:: 容器没有太多经验,所以我不确定我是否正确使用它。 我正在尝试处理一组值,并且每组中都有另一组值。
map<string, set<string> > data_map;
data_map["KEY1"].insert("VAL1");
data_map["KEY1"].insert("VAL2");
data_map["KEY2"].insert("VAL1");
data_map["KEY2"].insert("VAL3");
当我尝试访问地图中的集合时出现错误(内部循环)
error: no match for call to ‘(std::set<std::basic_string<char> >) ()’|
error: no match for call to ‘(std::set<std::basic_string<char> >) ()’|
for( map<string, set<string> >::iterator mip = data_map.begin();mip != data_map.end(); ++mip) {
for ( set<string>::iterator sit = mip->second().begin(); sit != mip->second().end(); ++sit )
cout << *sit << endl;
}
您能告诉我如何迭代所有值吗?
【问题讨论】:
-
你只想要
second,而不是second()(它是std::pair的一个字段,不是一个方法)。这能解决您的问题吗? -
@JeremyRoman 对不起,你是对的。谢谢!