Macierz sąsiedztwa - std::bad_alloc

Macierz sąsiedztwa - std::bad_alloc
K9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
0

.

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0

Policz ile pamięci chcesz zarezerwować przy 10 tyś wierzchołków.

K9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
0

.

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

Nie, potrzebujesz tylko 10000100004 = 400MB więc nie wydaje mi się żeby to było aż tak dużo.

K9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
0

.

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0

Przydziel to: bool Odwiedzone[l_wierzcholkow]; dynamicznie a problem powinien zniknąć.
Kod skopany na maksa.

K9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5
0

.

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0
  1. Nie używaj wersji przyrostkowej inkrementacji/dekrementacji jeżeli nie masz takiej potrzeby.
  2. Po kiego przydzielasz pamięć "ręcznie" skoro istnieje vector<vector<bool> > tab(l_wierzcholkow,vector<bool>(l_wierzcholkow,false)); używasz: tab[y][x]=true; lub if(tab[y][x]).
  3. Zrób może jakąś klasę z tego np Graph.
  4. Nie używaj zmiennych globalnych, przekaż jako parametr przez referencje.
  5. Warunek przy losowaniu to jakiś WTF, napisz po ludzku: if((!tab[y][x]))&&(y!=x)) { tab[y][x]=tab[x][y]=true; ++i; }

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.