我有一个包含一组整数的地图,如下所示:
std::map<int, std::set<int>> haha;
但每组中的元素数量未知。现在我想迭代整个地图并将键和值打印到文件"f"
。怎么做?
答案 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;
}
}