#include <map>
#include <vector>
#include <sstream>
#include <string>
#include <algorithm>
#include <iterator>
#include <iostream>
using namespace std;
typedef std::map<std::string, std::vector<int> > StringMap;
void AddToMap(StringMap& sMap, const std::string& line)
{
istringstream strm(line);
string name;
strm >> name;
StringMap::iterator it = sMap.insert(make_pair(name, std::vector<int>())).first;
int num;
while (strm >> num)
it->second.push_back(num);
}
int main()
{
vector<std::string> data = { "Adam 2 5 1 5 3 4", "John 1 4 2 5 22 7", "Kate 7 3 4 2 1 15", "Bill 2222 2 22 11 111" };
StringMap vectMap;
// Add results to map
for_each(data.begin(), data.end(), [&](const std::string& s){AddToMap(vectMap, s); });
// Output the results
for_each(vectMap.begin(), vectMap.end(),
[](const StringMap::value_type& vt)
{cout << vt.first << " "; copy(vt.second.begin(), vt.second.end(), ostream_iterator<int>(cout, " ")); cout << "\n"; });
}
I2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHNzdHJlYW0+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxpdGVyYXRvcj4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6dmVjdG9yPGludD4gPiBTdHJpbmdNYXA7Cgp2b2lkIEFkZFRvTWFwKFN0cmluZ01hcCYgc01hcCwgY29uc3Qgc3RkOjpzdHJpbmcmIGxpbmUpCnsKCWlzdHJpbmdzdHJlYW0gc3RybShsaW5lKTsKCXN0cmluZyBuYW1lOwoJc3RybSA+PiBuYW1lOwoJU3RyaW5nTWFwOjppdGVyYXRvciBpdCA9IHNNYXAuaW5zZXJ0KG1ha2VfcGFpcihuYW1lLCBzdGQ6OnZlY3RvcjxpbnQ+KCkpKS5maXJzdDsKCWludCBudW07Cgl3aGlsZSAoc3RybSA+PiBudW0pCgkJaXQtPnNlY29uZC5wdXNoX2JhY2sobnVtKTsKfQoKaW50IG1haW4oKQp7Cgl2ZWN0b3I8c3RkOjpzdHJpbmc+IGRhdGEgPSB7ICJBZGFtIDIgNSAxIDUgMyA0IiwgIkpvaG4gMSA0IDIgNSAyMiA3IiwgIkthdGUgNyAzIDQgMiAxIDE1IiwgIkJpbGwgMjIyMiAyIDIyIDExIDExMSIgfTsKCVN0cmluZ01hcCB2ZWN0TWFwOwoKCS8vIEFkZCByZXN1bHRzIHRvIG1hcAoJZm9yX2VhY2goZGF0YS5iZWdpbigpLCBkYXRhLmVuZCgpLCBbJl0oY29uc3Qgc3RkOjpzdHJpbmcmIHMpe0FkZFRvTWFwKHZlY3RNYXAsIHMpOyB9KTsKCgkvLyBPdXRwdXQgdGhlIHJlc3VsdHMKCWZvcl9lYWNoKHZlY3RNYXAuYmVnaW4oKSwgdmVjdE1hcC5lbmQoKSwKCQlbXShjb25zdCBTdHJpbmdNYXA6OnZhbHVlX3R5cGUmIHZ0KQoJe2NvdXQgPDwgdnQuZmlyc3QgPDwgIiAiOyBjb3B5KHZ0LnNlY29uZC5iZWdpbigpLCB2dC5zZWNvbmQuZW5kKCksIG9zdHJlYW1faXRlcmF0b3I8aW50Pihjb3V0LCAiICIpKTsgY291dCA8PCAiXG4iOyB9KTsKfQo=