un mapa hash C ++ que conserva el orden de inserción [duplicado]

Esta pregunta ya tiene una respuesta aquí:

A std :: mapa que realiza un seguimiento del orden de inserción? 14 respuestas

Tengo el siguiente 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;
}

Sin embargo, estoy buscando algo que conserve el orden para que luego pueda iterar sobre los elementos en el mismo orden en que se insertaron. En mi computadora, el código anterior no conserva el orden e imprime lo siguiente:

 0 1
11 0
21 2

Pensé que tal vez podría usar unboost::multi_index_container

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

¿Alguien puede mostrarme cómo implementar mi código original usando este contenedor (o cualquier otro contenedor apropiado) para que el iterador siga el orden de inserción?

Respuestas a la pregunta(2)

Su respuesta a la pregunta