Vector Iterator Adresse Ändern



  • Hallo Zusammen,

    Ich habe ein String Vector erstellt und ihn mit push_back gefüllt.

    Ich will nun jetzt mit einen Iterator die Vector-instanzen erreichen, die bearbeiten und wieder speichern. Wie geht das?

    Ich habe so implementiert.

    vector<string> linesVector;
    vector<string>::const_iterator linesVectorIt;
    string linStr; 
    
    for(linesVectorIt=linesVector.begin(); linesVectorIt!=linesVector.end(); linesVectorIt++)
    {
        lineStr=*linesVectorIt;
    
       ...lineStr bearbeiten....
    
        *linesVectorIt = lineStr;
    }
    

    Ich bekomm aber follgende Fehler:
    error: passing 'const std::basic_string<char>' as 'this' argument of 'std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Alloc>::operator=(const _CharT*) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>, std::basic_string<_CharT, _Traits, _Alloc> = std::basic_string<char>]' discards qualifiers

    Kann jemand helfen?



  • 1. Zeige die gesamte Funktion!
    2. Benutze doch einfach non-const iteratoren und bearbeite den string direkt.



  • Schon mal drüber nachgedacht wofür das const bei const_iterator steht? Und warum bearbeitest du nicht gleich das, worauf der Iterator zeigt, anstatt es vorher zu kopieren?
    Edit:
    Zu spät..
    Edit2@SeppJ:
    Viel zu spät! :p


  • Mod

    Du benutzt const-Iteratoren, willst aber den Inhalt ändern. Wie soll das gehen?

    edit: Wie schreibt ihr anderen bloß immer so schnell...

    cooky451 schrieb:

    Edit2@SeppJ:
    Viel zu spät! :p

    Ja, echt. 1:54 Minuten nach theta und 20 Sekunden nach dir. Sehr schwache Leistung, ich muss mich schämen.



  • Vielen Dank.
    Ihr seid Hammer

    Die Erstellung einer Iterator habe ich einfach so gelernt und nie nachgedacht 🙂



  • spartakus schrieb:

    Die Erstellung einer Iterator habe ich einfach so gelernt und nie nachgedacht 🙂

    Dann hast du es nie gelernt sonder einfach nur abgetippt. Lernen ist auch immer mit Nachdenken verbunden.


Anmelden zum Antworten