Вот моя карта:
typedef std::map<int/*security id*/, PositionMonth> PortfolioMonth;
, где PositionMonth
- это структура, напр .:
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)
{}
};
Вопрос : как отсортировать std::map
по второму значению ключевого параметра (по market_value_
, пусть будет int)? Примеры или ссылки?
PS. Методы повышения не заинтересованы!
PPS. Я не могу инициализировать мою std :: map с помощью функтора сравнения!
Спасибо за помощь!
Мое решение (или как я сам это сделал):
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();
}
};
и в функции:
typedef std::pair<int/*security id*/, _Entry> data_t;
, где _Entry
равно PositionMonth
std::vector<data_t> vec(item.funds_end_.begin(), item.funds_end_.end());
std::sort(vec.begin(), vec.end(), Nav::LessSecondCcy<data_t>());
Готово!