Witam, mam problem z macierzą ... mam wczytać z pliku binarnego dane - gdzie pierwsze 2 liczby to wysokość macierzy i szerokość macierzy, kolejne to wartości danej macierzy. Udało mi się załączyć ten plik. Program odczytuje wartości poprawnie (wysokość i szerokość jest odczytana), jednakże gdy wchodzę do pętli, wywala mi błąd przy dodawaniu wartości (pusch_back) do vector<vector<int>>macierz ... podczas debagowania program zaczymuje się dopiero w momencie który zaznaczyłem w kodzie podanym niżej:
#include<iostream>
#include<vector>
#include<fstream>
using namespace std;
void wczytaj_macierz()
{
vector<vector<int>>macierz;
fstream plik("macierz_A.bin", ios::in | ios::binary);
char *temp = new char[sizeof(int)];
plik.read(temp, sizeof(int));
int *nr1 = (int*)temp;
int wysokosc = *nr1;
char *temp2 = new char[sizeof(int)];
plik.read(temp2, sizeof(int));
int *nr2 = (int*)temp2;
int szerokosc = *nr2;
while (!plik.eof())
{
char *temp3 = new char[sizeof(int)];
plik.read(temp3, sizeof(int));
int *nr1 = (int*)temp3;
int wartosc = *nr1;
int i = 0; int h = 0;
if(i < szerokosc)
{
macierz[h].push_back(wartosc); // <-- TUTAJ PROGRAM ZATRZYMUJE SIĘ
i++;
}
else{
i = 0; h++;
}
}
plik.close();
}
int main()
{
wczytaj_macierz();
}
dodam jeszcze, że nie wyskakują żadne błędy oprócz tego, że w podanym momencie program zatrzymuje się i wyskakuje błąd "debug assertion filed"
jeśli ktoś wie gdzie leży błąd to będę bardzo wdzięczny. jeśli ktoś chciałby przetestować, mogę dodać plik binarny.
https://drive.google.com/open?id=0B3eIuS5jJHn_X2p3cGM1VGpxWkU