Zeiger auf Containerelemente



  • Servus,

    ich möchte gerne einen String greifen aus einem Container. Dabei muss ich aufpassen, dass es wirklich die im Container liegenden Instanz ist und nicht eine Kopie angelegt wird. Ich dachte nun also, dass ich in dem Fall wohl einen Zeiger nutzen sollte. Jetzt klappt das aber nicht so wie ich will, was ist da los? Danke vorab.

    seqan::CharString* currentBaseStringPtr;   
    currentBaseStringPtr = &sequencesList[ containerCounter ];
    

    Wie ist das im Falle eines normalen Strings, aus std::string, da ist das Beispiel wohl geläufiger?

    string* strPtr;   
    strPtr = &stringListArray[i];
    

    Kann man direkt das Objekt nicht als Pointer ansprechen und auf die gleiche Instanz zugreifen, etwa:

    string neuerString = stringListArray[i];
    


  • Sodala,

    ich mache mich dann mal auf die Jagd nach einer Lösung, das Ausgabe der Adressen wird mich dann schon zu einer Lösung kommen lassen.

    cout << " XXXXXX Adressvergleich XXXXX : currentBaseString: " << &currentBaseString << "; containerElement: " << &sequencesList[ containerCounter ] << endl;
    


  • Ist doch logisch, dass der Zeiger eine andere Adresse hat, als das Element selber. Außerdem sehe ich gerade nicht, warum du einen Zeiger nehmen möchtest, eine Referenz reicht doch?



  • Nimm nen vernünftigen Container und seine Iteratoren. Obacht, die werden
    auch mal ungültig.



  • container::iterator i = sequencesList.begin()+ containerCounter; //wenn du n iterator auf das element haben willst, abhängig davon was bei dir "container tatsächlich ist"
    
    string& str = sequencesList[containerCounter]; //Referenz und keine Kopie
    

Anmelden zum Antworten