¿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!