Ich bin ein Neuling nach C++, und diese Frage scheint für viele Leute offensichtlich.C++: Std :: Map-Sortierung
Wenn ich so etwas wie
schreibenstd::map<int, double> m;
- Ist m garantiert nach int Reihenfolge sortiert werden?
- Muss eine Vergleichsklasse definiert werden, um die Sortierung zu erzwingen?
Zum Beispiel
class own_int_less : public binary_function<int, int, bool>
{
public:
bool operator()(const double &left, const double &right ) const
{
return (abs(left - right) > epsilon) && (left < right);
};
double epsilon;
};
- Wenn tatsächlich erfolgte die Sortierung? Ich meine, wird die Sortierfunktion jedes Mal aufgerufen, wenn ich etwas in die Karte einfüge? Oder wird es aufgerufen, bevor ich die Karte durchblättere?
Danke.
Sie haben eine 'binary_function' definiert, aber Ihr 'operator()' nimmt zwei 'const double &' als Parameter ... –
Achten Sie darauf, Ihre Membervariablen zu initialisieren. ('Epsilon' wird in Ihrem Beispiel niemals initialisiert). –