HashMap中不存在保存顺序的机制。而在LinkedHashMap中可以保持两种顺序,分别是插入顺序和访问顺序,这个是可以在LinkedHashMap的初始化方法中进行指定的。相对于访问顺序,按照插入顺序进行编排被使用到的场景更多一些,所以默认是按照插入顺序进行编排。
链接:(没心情看原理,直接使用)
LinkedHashMap 原理分析 - 知乎 (zhihu.com)
重点:
1.由于在一次同事询问下,发现这种简单的内容,没做记录,特此做记录。
2.直接使用git上写好的源码:
lib_linked_hash_map/include/linked_hash_map.hpp at master · fyears/lib_linked_hash_map · GitHub
3.效果如下:
int main() {
ppstd::linked_hash_map<std::string, std::vector<int>> dataMap;
std::vector<std::vector<int>> data;
std::vector<std::pair<std::string, int>> vecdata{ {"苹果",8}, {"香蕉",2}, {"苹果",1}, {"牛肉",2},{"香蕉",1}, {"苹果",2} ,{"火腿",1}, {"火腿",9} ,{"香蕉",1}, {"牛肉",3} };
for (auto&var: vecdata)
{
dataMap[var.first].emplace_back(var.second);
}
for (const auto& var : dataMap)
{
data.emplace_back(dataMap[var.first]);
std::cout << "组合键" << var.first << std::endl;
for (auto&num: dataMap[var.first])
{
std::cout << num <<" " << std::endl;
}
}
return 0;
}