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] = 9dann ist output:
output[0] = 1
output[1] = 2
output[2] = 7
output[3] = 8
output[4] = 9
output[5] = :
output[6] = 7
output[7] = owarum 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++; }