const von const std::list wegcasten
-
Hallo!
Ich hab eine "Interface"-Methode wo mir eine const std::list übergeben wird. Ich hab keine Chance, den Typen zu ändern, muss jetzt aber aus Performance gründen die Liste sortieren wenn sie mehr als xxx Elemente enthält.
Dafür hab ich mir auch schon einen Comparator geschrieben:
bool compare(std::pair<std::string, double> &first, std::pair<std::string, double> &second) { return ( first.first.compare( second.first ) <= 0) ? true : false; }Leider muss ich momentan, eben weil die Referenz const ist, eine neue std::list anlegen, wo die alte reinkopiert wird, und erst bei dieser kann ich dann .sort() aufrufen was nicht gerade effizient ist.
Ich bin mir darüber im klaren das das schlechte Stil ist und das das gefährlich ist, wenn man nicht weiß wer die Liste noch braucht. Aber ich weiß was ich tue

Welche Möglichkeiten habe ich bzw. wie kann ich das const "wegcasten"?
-
dazu gibt es const_cast:
const list<bla> l;
list<bla>& l2 = const_cast<list<bla> >(l);oder so ähnlich
-
bist du dir sicher, dass die zusätzliche kopie wirklich ein problem ist? hast du es gemessen? wenn es eher eine mikrooptimierung ist, würde ich es mir zweimal überlegen, das const wegzucasten.