C STL map 我不希望它排序!

新手上路,请多包涵

这是我的代码

map<string,int> persons;

persons["B"] = 123;
persons["A"] = 321;

for(map<string,int>::iterator i = persons.begin();
    i!=persons.end();
    ++i)
{
    cout<< (*i).first << ":"<<(*i).second<<endl;
}

预期输出:

   B:123
  A:321

但它给出的输出是:

   A:321
  B:123

我希望它保持在 map<string,int> 中插入键和值的顺序。

可能吗?还是我应该使用其他一些 STL 数据结构?哪一个?

原文由 Pratik Deoghare 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 904
2 个回答

没有标准容器可以直接执行您想要的操作。如果要保持插入顺序,显而易见的容器是向量。如果您还需要按字符串查找,请使用矢量和地图。该映射通常是字符串到矢量索引,但由于您的数据已经是整数,您可能只想复制它,具体取决于您的用例。

原文由 anon 发布,翻译遵循 CC BY-SA 2.5 许可协议

您可以使用成对的向量,它与未排序的地图容器几乎相同

std::vector<std::pair<T, U> > unsorted_map;

原文由 fflores 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题