Egyszerű kód, mit rontok el (cpp)?
Be kellene olvasni fájlból az alábbi adatokat egy 2D-s vektorba (t-be):
11 4 (ezeket nem kell beletenni, csak megadja az oszlopok és sorok számát)
1 2 2 3 4 5 6 7 8 9 9
1 2 4 0 0 0 1 2 3 4 5
0 0 0 0 0 0 2 0 0 1 0
3 4 5 -1 -10 -14 -5 -6 3 2 1
Eddig ilyen a kódom:
ifstream f("proba.txt");
int x, y;
f>>x>>y;
vector<vector <int > > t;
vector<vector<int> > vec(x, vector<int>(y,0));
for (int i=0; i<y; i++)
{
for (int j=0; j<x; j++)
{
f >> vec[i][j];
}
}
t = vec;
A program megcsinálja a beolvasást, csak nem return 0-t dob, hanem ezt:
Process returned -1073741819 (0xC0000005)
Mit rontok el?:(
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Ez memory overflow. Az a gond, hogy a vektorodnak x sora és y oszlopa van.
A vektorod elemeit így éred el: v[sor][oszlop].
Na most neked az első forban y-ig mennek az értékek, a másodikban meg csak x-ig. E miatt olyan helyre próbálsz írni a memóriában, ami nincs lefoglalva. E miatt van a hibakód.
Megoldás: első for x-ig menjen, második y-ig.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
Biztos hogy kell neked vektor ide? Nem véletlenül van meg, hány sor és hány oszlop. Vectorba akkor is tudnál olvasni, ha nincs megadva. Egy sima tömb nem elég?
int tomb[][]=new int[x][y];
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!