Klitzekleine Frage zur einem Stringiterator
-
alles klar das ding, danke!
-
Ich schwöre er hat das hier eben compiliert:
myString = (*itString);
Jetzt gehts mit mal nicht mehr?!
Da beißt sich irgendwas in der algorithm?**
C:\Programme\Microsoft Visual Studio\VC98\INCLUDE\algorithm(539) : Siehe Verweis auf Instantiierung der kompilierten Funktionsvorlage 'void __cdecl std::_Sort_0(class std::list<class std::basic_string<char,struct std::char_traits<char>,class
std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char>,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >::iterator,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)'
C:\Programme\Microsoft Visual Studio\VC98\INCLUDE\algorithm(546) : error C2784: 'class std::basic_string<_E,_Tr,_A> __cdecl std::operator +(const class std::basic_string<_E,_Tr,_A> &,const class std::basic_string<_E,_Tr,_A> &)' : Vorlagenargument fu
er 'const class std::basic_string<_E,_Tr,_A> &' von 'class std::list<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::a
llocator<char> > > >::iterator' konnte nicht hergeleitet werden
**
-
Mal abgesehen davon, daß die Klammern unnötig sind ist diese Zeile vollkommen in Ordnung.
-
Wo kommt der Fehler? Hab meine Glasskugel leider daheim vergessen ;).
mfg
v R
-
Ja, macht die Gewohnheit wenn ich (*it)-> verwende.
Der Fehler kommt, wie im letzten Post vermutet, aus der algorithm :D.Klasse:
//#include <algorithm>
Lasse ich diese Headerdatei außen vor, funktioniert alles. Nur leider brauche ich die sortfunktion
.
Das kanns doch nicht sein oder? Könntet ihr das bei euch testen, hab ich einen Bug gefunden oder haben meine visual studio dateien einen Fehler?
-
Wie rufst du sort auf? Wie sind die Parameter? Musstest du selbst den op<
implementieren? Wenn ja, hast du die beiden Parameter des op< als const
deklariert?mfg
v R
-
So verwende ich Sort:
sort(stringListe.begin(),stringListe.end());
Es wird also eine Liste voll mit strings sortiert.
Ich habe keine eigenen Operatoren definiert / überladen.
-
Handelt sich ja um eine Liste, sry hab ich nicht dran gedacht. std::list hat
seine eigene sort-Elementfunktion.mfg
v R
-
Tatsache, danke für den Tipp.
Aber ist das nun ein Fehler den man melden sollte oder nicht?
-
Sokleinmansiehtsiekaum schrieb:
Tatsache, danke für den Tipp.
Aber ist das nun ein Fehler den man melden sollte oder nicht?
Ich hab mir mal die sort-Funktion angesehen. Es ist, IMHO, kein Fehler, da
sort z. B. folgende Zeile hat:__introsort_loop(__first, __last, __lg(__last - __first) * 2);
Hier meckert mein gcc, dass der op- (und an anderer Stelle der op+) nicht
fuer __last definiert sei. Ich nehme mal an, dass haengt damit zusammen, dass
der Speicherbereich von std::list nicht zusammenhaengend ist. Einfache
Zeigerarithmetik ist hier nicht moeglich. Dazu muessten intern bei einem
op+ aufruf entsprechend das naechste (bzw. n-te) Element gesucht und zurueck-
gegeben werden.Ich denke mal, dass das auch Performencegruenden nicht gemacht worden ist,
will mich da aber nicht festlegen.mfg
v R
-
Jetzt rall ich das gerade nicht:
Tatsache war doch das
string Meinstring = *itString;
nicht mehr ging sobald die algorithm includiert wurde.
Und da Frage ich mich noch immer wieso
-
Schau dir nochmal deine gepostete Fehlermeldung an. Es geht hier um die sort
Funktion, nicht um die Zuweisung.mfg
v R
-
Aua alles klar danke sehr
!