Я знаю, что этот вопрос немного устарел, но у меня был похожий вопрос, и этот пост помог мне, поэтому я думаю, что могу опубликовать свое решение здесь. На основе примера, найденного здесь: карта и мультикарта У меня есть map
с парой <string, vector<string> >
, где vector<string>
будет, конечно, содержать более одного значения
#include <string.h>
#include <iostream>
#include <map>
#include <utility>
#include <vector>
using namespace std;
int main() {
map< string, vector<string> > Employees;
vector <string> myVec;
string val1, val2, val3;
val1 = "valor1";
val2 = "valor2";
val3 = "valor3";
// Examples of assigning Map container contents
// 1) Assignment using array index notation
Employees["Mike C."] = {"val1","val2", "val3"};
Employees["Charlie M."] = {"val1","val2", "val3"};
// 2) Assignment using member function insert() and STL pair
Employees.insert(std::pair<string,vector<string> >("David D.",{val1,val2,val3}));
// 3) Assignment using member function insert() and "value_type()"
Employees.insert(map<string,vector<string> >::value_type("John A.",{"val7","val8", "val9"}));
// 4) Assignment using member function insert() and "make_pair()"
myVec.push_back("val4");
myVec.push_back(val1);
myVec.push_back("val6");
Employees.insert(std::make_pair("Peter Q.",myVec));
cout << "Map size: " << Employees.size() << endl;
for(map<string, vector<string> >::iterator ii=Employees.begin(); ii!=Employees.end(); ++ii){
cout << (*ii).first << ": ";
vector <string> inVect = (*ii).second;
for (unsigned j=0; j<inVect.size(); j++){
cout << inVect[j] << " ";
}
cout << endl;
}
}
Вы можете заметить различные способы добавления информации, а также часть печати, которая печатает пары «ключ-вектор», где вектор имеет несколько значений. Мы также можем печатать так, если C++11:
for(auto ii=Employees.begin(); ii!=Employees.end(); ++ii){
cout << (*ii).first << ": ";
vector <string> inVect = (*ii).second;
for (unsigned j=0; j<inVect.size(); j++){
cout << inVect[j] << " ";
}
cout << endl;
}
Вывод будет следующим:
Map size: 5
Charlie M.: val1 val2 val3
David D.: valor1 aVal1 valor3
John A.: val7 val8 val9
Mike C.: val1 val2 val3
Peter Q.: val4 valor1 val6
P.S.: Я не знаю, почему вывод находится в другом порядке, я считаю, что разные методы нажатия и их скорость имеют к этому какое-то отношение.
person
Lejuanjowski
schedule
20.04.2015