c++ - 如何在 C++ 中迭代集合映射 (std::map<string,std::set< string>>)?

标签 c++ stl set maps

对于一个特定的键,我想插入并打印与该键对应的集合的元素。 对于,例如如果我有 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;`

我不知道如何开始。请帮忙!`

最佳答案

for(auto const& pair : mp) {
    cout << pair.first << ": ";
    for(auto const& elem : pair.second) {
        cout << elem << ", ";
    }
    cout << "\n";
}

live example

或者,如果你想更多地使用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";
});

live example

关于c++ - 如何在 C++ 中迭代集合映射 (std::map<string,std::set< string>>)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39810763/

相关文章:

C++ 程序检查标签有效性

c++ - std::ostream 为每一行调用回调

c++ - 像 std::vector 这样的 vector 类的简单实现

c++ - 如何从 std::map 值的 std::vector 中找到最小键值?

Java:如何从不基于键的 HashMap 中正确删除值

list - Scala使用toSet.toList与distinct

c++ - 二叉搜索树。插入方法插入不正确

c++ - 如何发现 std::vector 的大小/长度(以字节为单位)?

mysql - 将MySQL数据库转换为UTF16

c++ - 如何在程序中动态初始化一个对象?