对于特定键,我想插入并打印与该键对应的集合的元素。 例如,对于如果我有 A - 橙色,苹果 B - 红色,蓝色
如何打印? 到目前为止,我写了这个:`
std::map<string,std::set<string> > mp;
std::map<string,std::set<string> >::const_iterator row;
std::set<string>:: const_iterator col;
mp["A"].insert("pawan");
mp["A"].insert("patil");
for (row = mp.begin(); row!= mp.end(); row++)
for (col = row->begin(); col!=row.end(); col++)
return 0;`
我不知道如何开始。请帮帮忙!`
答案 0 :(得分:2)
for(auto const& pair : mp) {
cout << pair.first << ": ";
for(auto const& elem : pair.second) {
cout << elem << ", ";
}
cout << "\n";
}
或者,如果您想更多地使用std算法:
std::for_each(mp.cbegin(), mp.cend(), [](auto const& pair){
cout << pair.first << ": ";
std::copy(pair.second.cbegin(), pair.second.cend(), std::ostream_iterator<std::string>(std::cout, ", "));
cout << "\n";
});
答案 1 :(得分:0)
问题想要插入一个元素,然后仅打印该键的 。
第一步是找到集合:
auto &s=mp["A"];
现在,将值插入此集合中:
s.insert("pawan");
s.insert("patil");
现在,迭代集合,打印集合中的值:
for (const auto &v:s)
std::cout << v << std::endl;
答案 2 :(得分:0)
for(auto it=mp.begin();it!=mp.end();++it) //Loop to iterate over map elements
{
cout<<it->first<<"=";
for(auto it1=it->second.begin(); it1 !=it->second.end(); it1++)
cout<<*it1<<" ";
cout<<"\n";
}
外部for循环遍历映射的所有元素,内部for循环打印与映射中的键关联的set对应的值。