C++ vector和map的巢狀使用
阿新 • • 發佈:2019-01-08
在實習公司的專案裡,需要儲存每個使用者及其所有的操作指令,我想到的是用multimap,或者是map和vector巢狀的資料結構來儲存這些資料。一開始是想用multimap的,因為巢狀的給人感覺比較複雜,使用後發現multimap在遍歷輸出的時候,如果想以使用者來劃分有點麻煩了,除了操縱容器外還需要其他的方式來判斷,遂敢用map和vector的巢狀結構,實際使用時發現容器巢狀使用也不是特別麻煩,當然multimap夠用的情況下,直接用multimap就好
std::map<std::string, std::vector<std::string> > StringVecMap;
std ::string key;
std::string value;
// 插入
StringVecMap::iterator it = StringVecMap.find(user_name);
if (it == StringVecMap.end()) {
std::vector<std::string> vec;
vec.push_back();
StringVecMap.insert(make_pair(key, vec));
}else
it->second.push_back(value);
// 想做到以key為序的遍歷輸出也非常簡單
for (it = StringVecMap.begin(); it != StringVecMap.end(); ++it) {
vector <string>::iterator it_inner;
for (it_inner = it->second.begin(); it_inner != it->second.end(); ++it_inner) {
std::cout << *it << std::endl;
}
}