相关疑难解决方法(0)

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;
}
Run Code Online (Sandbox Code Playgroud)

预期产量:

  B:123
  A:321
Run Code Online (Sandbox Code Playgroud)

但它给出的输出是:

  A:321
  B:123
Run Code Online (Sandbox Code Playgroud)

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

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

c++ stl

23
推荐指数
4
解决办法
3万
查看次数

使用boost multi_index_container来保留插入顺序

我最初开始使用a std::multimap来存储具有相同键的许多值,但后来我发现它不会保留具有相同键的值之间的插入顺序. 这个答案声称它可以完成boost::multi_index::multi_index_container,但没有举例.通过文档查看,没有这种用法的例子,我无法对你应该如何使用这个东西做出正面或反面.我开始期待来自较少使用的boost库的文档很差,但这需要蛋糕.任何人都可以指向一个教程或示例,显示它使用我想要的方式,或者甚至可能自己提供一个示例?

c++ boost multimap multi-index

5
推荐指数
1
解决办法
2899
查看次数

C++ 11:unordered_map/set是否保证遍历顺序为insert命令?

我写了一些像这样的代码:

unordered_map<int, int> uii;
uii.insert(make_pair(12,4));
uii.insert(make_pair(3,2));
uii.insert(make_pair(6,1));
uii.insert(make_pair(16,9));
....
Run Code Online (Sandbox Code Playgroud)

当我使用for循环访问此地图时,它按照我插入的正确顺序打印键.我测试了unordered_set,结果相同.

所以我的问题是,C++标准是否保证访问顺序为插入顺序,就像Java一样LinkedHashMap

c++ unordered-map insert c++11

3
推荐指数
1
解决办法
273
查看次数

标签 统计

c++ ×3

boost ×1

c++11 ×1

insert ×1

multi-index ×1

multimap ×1

stl ×1

unordered-map ×1