000
09.11.2011, 14:15 Uhr
~Auronsen
Gast
|
Guten Tag, ich soll einen Algorithmus (MLR) Programmieren, dazu brauch ich ein Suffix-Array welchen ich dann Lexikographisch sortieren muss. Als String bzw. Text wird mir eine datei übergeben die ich dann auslese und in den Array fülle und danach sortiere.
Die Datei(also alle Chars in der datei) wird in den vector= vector<char>text; gespeichert.
Ich dachte mir dabei, die Sort funktion zu benutzen welche eine Compare objekt benutzt(Compare hab ich dann selber in einer Klasse mit der dazugehörigen Funktion geschrieben).
Mein Problem ist, sobald ich auf die Sort funktion zugreife gibt er mir einen APPCRASH raus, jedoch weis ich nicht warum, habe auch schon eine andere Funktion (Lexikographic_sort) probiert wo genau der selbe fehler auftritt.
Hier mal der Part des Codes, wo ich denke das da ein fehler sein könnte,
C++: |
#includet things...
vector<char> text;
class suffixcompare { public: inline bool operator()(int A, int B) { /*if(A<B) { lexicographical_compare(text.begin()+A,text.end(),text.begin()+B,text.end()); return true; } else return false; */ if(strcmp(&text[A],&text[B])==0) return (true); if(strcmp(&text[A],&text[B])==-1) return (true); if(strcmp(&text[A],&text[B])==1) return (true); // hier müssen noch die if abfragen hin... } suffixcompare() { }
};
void sa(vector<char> &Sa, string p) { //Suffarray befüllung int m,k; vector<int> sufar(Sa.size()); for(m=0; m<Sa.size();++m) {sufar.push_back(m);} suffixcompare testObj;
sort(sufar.begin(),sufar.end(),testObj); cout<<"FAIL"; /* nur zum testen ob er bis hierher kommt oder nicht, wenn ich cout<<"FAIL"; über die sort funktion schreibe, wird dies noch ausgegeben bevor der APPCrash kommt*/ }
int main(int argc, char* argv[]) { /*in der main gab es noch anderen code, der jedoch nur zum laden der textfile wichtig ist, da dies klappt, denke ich ist dieser code nicht notwendig.*/ for(int z=2;z<argc; z++) { sa(text,argv[z]); } return 0; }
|
für einen tipp wär ich euch sehr dankbar, könnte es daran liegen das vecto<char> text; global ist und ich dort auch in der mainfunktion zugreife? |