Hier ist meine Karte:HowTo sortieren std :: map?
typedef std::map<int/*security id*/, PositionMonth> PortfolioMonth;
wo PositionMonth
eine Struktur ist, ex .:
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)
{}
};
Frage: Wie std::map
durch den zweiten Wert Taste Param sortieren (von market_value_
, lassen Sie es sein int)? Beispiele oder Links?
PS. Boost-Methoden nicht interessiert!
PPS. Ich kann meine Std :: Map nicht mit compare funktor initialisieren!
Vielen Dank für Ihre Hilfe!
Meine Lösung (oder wie ich habe es selbst):
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();
}
};
und in der Funktion:
typedef std::pair<int/*security id*/, _Entry> data_t;
wo _Entry
ist PositionMonth
std::vector<data_t> vec(item.funds_end_.begin(), item.funds_end_.end());
std::sort(vec.begin(), vec.end(), Nav::LessSecondCcy<data_t>());
Fertig!
STL muss die Arbeit machen, denke ich. PS. Neben zusätzlichen beinhaltet - auf keinen Fall. Vielen Dank! – mosg
Danke, Tony, dieser Link hat meine Frage gelöst! Übrigens, ich hatte gegoogelt und Live-Tab mit genau diesem Link geöffnet, während begann, meine Frage auf SO zu posten ... Ich habe 'std :: map' in den' std :: vector' eingefügt und sortiere total diese Hündin! - WoW: D – mosg