um mapa de hash C ++ que preserva a ordem de inserção [duplicado]

Esta pergunta já tem uma resposta aqui:

A std :: map que controla a ordem de inserção? 14 respostas

Eu tenho o seguinte código

#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;
}

No entanto, estou procurando algo que preserve a ordem para que mais tarde eu possa interagir com os elementos na mesma ordem em que foram inseridos. No meu computador, o código acima não preserva o pedido e imprime o seguinte:

 0 1
11 0
21 2

Pensei que talvez pudesse usar umboost::multi_index_container

typedef multi_index_container<
    int,
    indexed_by<
        hashed_unique<identity<int> >,
        sequenced<>
    >
> Map;

lguém pode me mostrar como implementar meu código original usando esse contêiner (ou qualquer outro contêiner apropriado) para que o iterador siga a ordem de inserçã

questionAnswers(2)

yourAnswerToTheQuestion