¿Cómo ordenar std :: map?

Aquí está mi mapa:

typedef std::map<int/*security id*/, PositionMonth> PortfolioMonth;

dóndePositionMonth es una estructura, ej .:

struct PositionMonth
        {
            Nav::Shares shares_;
            Nav::Amount market_value_;

            PositionMonth(void)
                {}
            PositionMonth(const Nav::Amount& market_value
                    , const Nav::Shares& shares)
                : market_value_(market_value)
                , shares_(shares)
                {}
        };

Pregunta: cómo ordenarstd::map por segundo parámetro clave de valor (pormarket_value_, que sea int)? Ejemplos o enlaces?

PD. ¡Los métodos de refuerzo no están interesados!

PPS ¡No puedo inicializar mi std :: map con compare functor!

¡Gracias por la ayuda!

Mi solución (o cómo lo hice yo mismo):

template<class T>
    struct LessSecondCcy
        : std::binary_function<T,T,bool>
    {
        inline bool operator ()(const T& _left, const T& _right)
        {
            return _left.second.market_value_.currency() < _right.second.market_value_.currency();
        }
    };

y en función:

typedef std::pair<int/*security id*/, _Entry> data_t;

dónde_Entry esPositionMonth

std::vector<data_t> vec(item.funds_end_.begin(), item.funds_end_.end());
std::sort(vec.begin(), vec.end(), Nav::LessSecondCcy<data_t>());

¡Hecho!

Respuestas a la pregunta(2)

Su respuesta a la pregunta