如何在c ++中迭代包含set的映射?

时间:2015-12-13 15:39:14

标签: c++ loops dictionary iteration

我有一个包含一组整数的地图,如下所示:

std::map<int, std::set<int>> haha;

但每组中的元素数量未知。现在我想迭代整个地图并将键和值打印到文件"f"。怎么做?

3 个答案:

答案 0 :(得分:4)

BD

答案 1 :(得分:2)

我所知道的最简洁的方式(如果没有,请告诉我):

for(auto const& pair : haha)
{
    std::cout << pair.first << " : ";
    std::copy(pair.second.begin(), pair.second.end(), std::ostream_iterator(std::cout, " "));
    std::cout << std::endl;
}

或完全使用range-for循环:

for(auto const& pair : haha)
{
    std::cout << pair.first << " : ";

    for(auto x : pair.second)
        std::cout << x << " ";

    std::cout << std::endl;
}

如果你想将它打印到一个文件,只需创建std::ofstream并用它的名字替换std::cout,因为这是C ++,而不是C.我们不希望看到{{1在这个漂亮的代码中。

答案 2 :(得分:0)

for (auto mapitr = haha.begin(); itr != haha.end(); ++mapitr) {
   std::cout << mapitr->first << std::endl;
   for (auto setItem: mapitr->second) {
     std::cout << setitem << std::endl;
   }
}