seltsames arrayverhalten



  • ich machs kurz:

    vector<char> erase(vector<char> vc, int a, int b) {
      vector<char> output;
    
      for(int x = 0; x <= vc.size(); x++) {
        if(x >= a && x <= b)
          x++;
    
      else output.push_back(vc[x]);
    }
    
    return output;
    }
    

    und

    int z = 0;
    
    while(erase(veingabe, 3 , 6).size() >= z) {
      z++;
      cout<<"pos "<<z<<": "<<erase(veingabe, 3 , 6)[z]<<endl;
    }
    

    veingabe mag sein:
    veingabe[0] = 0
    veingabe[1] = 1
    veingabe[2] = 2
    veingabe[3] = 3
    veingabe[4] = 4
    veingabe[5] = 5
    veingabe[6] = 6
    veingabe[7] = 7
    veingabe[8] = 8
    veingabe[9] = 9

    dann ist output:
    output[0] = 1
    output[1] = 2
    output[2] = 7
    output[3] = 8
    output[4] = 9
    output[5] = :
    output[6] = 7
    output[7] = o

    warum nur ähnliches auch bei (...).erase(pos1,pos2);

    warum nur!!! 😞 😕 😞 😕 😞 was mach ich verkehrt 😕

    kennt einer die antwort wie man derartiges in meiner funktion verhindert?



  • ach, unter linux unterscheiden sich sich ausgabeinhalte, scheint deshalb an der dynamischen speicherverwaltung zu liegen.
    aber er sollte ja laut funktion nur best. inhalte in vektor packen warum dann diese unnatürliche größe des vectors?



  • while(erase(veingabe, 3 , 6).size() >= z)
    

    ...



  • vector<char> erase(vector<char> vc, int a, int b) {
      vector<char> output;
    
      for(int x = 0; x < vc.size(); x++) {
        if(x >= a && x <= b)
          x++;
    
      else output.push_back(vc[x]);
    }
    
    return output;
    }
    

    und

    int z = 0;
    
    while(erase(veingabe, 3 , 6).size() > z) {
        cout<<"pos "<<z<<": "<<erase(veingabe, 3 , 6)[z]<<endl;
        z++;
    }
    

Anmelden zum Antworten