这是我的地图:
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)
{}
};
问题:如何按第二个值键param(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>());
完成!
答案 0 :(得分:2)
有several options gamedev.net。仔细查看Fruny发布的帖子。
除此之外:您为什么不将Boost视为可能的解决方案提供商?对于专业的C ++编码人员来说,这是一个备受尊重,同行评估,记录良好的解决方案。
答案 1 :(得分:1)
也许std :: map构造函数中cplusplus.com artile中的示例代码给出了您要查找的说明!
编辑:上面链接示例代码中实例化的fifth
地图显示了如何更改比较器对象。