从map <key,set <datatype >>访问元素

Lea*_*Lea 5 c++ map set c++11

我正在使用如下所示的数据结构:

map<string, set<string>> data;
Run Code Online (Sandbox Code Playgroud)

到目前为止,我使用foreach循环处理地图没有任何问题,但是,现在我需要打印出地图中的数据,如下所示:

KEY: elem1, elem2, elem3
KEY2: elem1, elem2, elem3
Run Code Online (Sandbox Code Playgroud)

由于最后缺少逗号,我不能再使用foreach循环了(我可以吗?).由于我是C++,C++ 11以及它提供的所有乐趣的新手,我很遗憾.我提出了:

for ( auto i : data )
{
    cout << i.first << ": ";
    for ( size_t i = 0; i < /* size of the set */ - 1; i ++ )
        cout << j << ", ";

    cout << /* the last element of the set */ << endl;
}
Run Code Online (Sandbox Code Playgroud)

我知道我想要什么,我只是不知道语法和C++参考没有多大帮助.感谢您的回答,同时我将自己浏览C++参考.

use*_*016 2

我通常(跨多种语言)使用分隔符,将其初始化为空字符串,然后在循环中更改:

for (auto& i : data) {
    std::cout << i.first << ": ";

    std::string delim;     
    for (auto& s : i.second) {
        std::cout << delim << s;

        delim = ", ";
    }

    std::cout << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

输出(coliru 上的现场演示):

KEY: elem1, elem2, elem3
KEY1: elem1, elem2, elem3
Run Code Online (Sandbox Code Playgroud)

另一个解决方案是使用 ostream 迭代器