7H3 N4C3R schrieb:
basic_string ist ebenfalls ein Template, das Argument mit jedem beliebigem Typ zieht also nicht.
Naja, da hast du zwar recht, aber für jeden beliebigen Typ noch ein char_traits zu implementieren, nervt schon etwas, nicht?
Zudem ist basic_string nicht einfach für beliebige Typen gemacht, es geht schon eher um Strings. Bei meiner Lösung brauchst du nur Iteratoren und intern verwende ich einzig einen std::vector, welcher aber genau dafür gemacht wurde, dass er alles aufnehmen kann.
7H3 N4C3R schrieb:
Außerdem wird die find_first_not_of Lösung sicherlich auch korrekt die char_traits zum Vergleichen benutzen. Das müsstest du noch nachziehen.
Nicht wirklich. Wenn ich mich recht erinnere, so ist das eq in char_traits für einen normalen String (wstring, string) gleich dem Operator == für ein wchar_t oder char. Es würde auch schwer anders gehen, nicht?
7H3 N4C3R schrieb:
Zusätzlich hat der Bibliothekshersteller jede Freiheit, seine find_first_not_of und jede andere Implementierung beliebig zu implementieren.
Dabei veränderst du aber eine allgemeingültige Funktion. Es steht nirgends im Standard, dass der Parameter von find_first_not_of sortiert übergeben werden muss. Dadurch änderst du etwas an der Standardimplementierung. Das halte ich nicht für sehr sinnvoll
7H3 N4C3R schrieb:
Also ich bezweifele, dass das all zu unperformant ist, auch wenn man es von außen nicht optimieren kann. Außerdem, um Scott Meyers zu zitieren, "prefer library calls and algorithms over handwritten loops".
*schaut sich seine Lösung an*
Ich habe doch kein einziger selbstgeschriebener Loop!
Und die Optimierungen, welche man hier machen könnte, sind extrem minim, vor allem, wenn man bei Strings bleibt.
Wenn man aber wirklich grössere Objekte hat, welche etwas länger benötigen für einen Vergleich und wenn man ein paar hundert, vielleicht gar tausend gültiger Zustände hat, dann wäre ein binary_search etwas sehr praktisches
Und ich möchte nochmals betonen:
Für die Lösung, welche der OP sucht, ist find_first_not_of immer noch das Beste
Grüssli