相关疑难解决方法(0)

保留插入顺序的C++哈希映射

我有以下代码:

#include <iostream>
#include "boost/unordered_map.hpp"

using namespace std;
using namespace boost;

int main()
{

    typedef unordered_map<int, int> Map;
    typedef Map::const_iterator It;

    Map m;
    m[11] = 0;
    m[0]  = 1;
    m[21] = 2;

    for (It it (m.begin()); it!=m.end(); ++it)
        cout << it->first << " " << it->second << endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是,我正在寻找保留顺序的东西,以便稍后我可以按照它们插入的相同顺序迭代元素.在我的计算机上,上面的代码不保留订单,并打印以下内容:

 0 1
11 0
21 2
Run Code Online (Sandbox Code Playgroud)

我想也许我可以用一个 boost::multi_index_container

typedef multi_index_container<
    int,
    indexed_by<
        hashed_unique<identity<int> >,
        sequenced<>
    >
> Map;
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我如何使用这个容器(或任何其他适当的容器)实现我的原始代码,以便迭代器遵循插入的顺序?

c++ unordered-map html-lists multi-index

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×1

html-lists ×1

multi-index ×1

unordered-map ×1