我正在使用如下所示的数据结构:
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++参考.
我通常(跨多种语言)使用分隔符,将其初始化为空字符串,然后在循环中更改:
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)
KEY: elem1, elem2, elem3
KEY1: elem1, elem2, elem3
Run Code Online (Sandbox Code Playgroud)