@pawegio: musisz zaalokować rozmiar wektorów (np. 10 wektorów po 5 elementów):
Kod: Zaznacz cały
vector< vector<int> > g(10,vector< int > (5));
Teraz po prostu chcesz pisać tam gdzie nie możesz (nie zaalokowałeś pamięci) i wywala problem.
pawegio pisze:ok, dzięki....
rzeczywiście nie za bardzo się wyraziłem o co chodzi.... Chciałem zaimplementować graf nieskierowany... m to liczba par wierzchołków do wczytania, a n to liczba wierzchołków. Normalnie użyłbym tablicy dwuwymiarowej i by było:
ale ze względu na liczbę danych stwierdziłem, że skorzystam z STL'a. Może jest jakiś lepszy sposób na implementację grafu?
Użycie tablicy i takiego wektora to słabe rozwiązanie (chyba, że jest to graf bardzo gęsty). Ogólnie nawet jak jest gęsty i tak będziesz ją reprezentował (jako macierz) to w grafie nieskierowanym nie potrzeba Ci całej tablicy a tylko macierz trójkątną (prawie 2x mniej użytej pamięci).
Do grafów rzadkich lepiej użyj własnej struktury, gdzie każdy wierzchołek jest reprezentowany przez strukturę, a ścieżki jako lista wskaźników (lub lista struktur (wskaźnik+waga+kolor+...)) w tej strukturze.