vector<tablica> - w pamięci

Odpowiedz Nowy wątek
2014-12-12 19:13
Czarny Terrorysta
0

Hey, mam taką wątpliwość: jeśli mam vector składający się z N elementowych tablic statycznych tj. np. vector<int[3]>tab(10) to w jaki sposób będzie to zapisane w pamięci? czy to będzie jedna długa tablica o rozmiarze 3x10=30 elementów, czy to będzie jakoś porozrzucane w pamięci czy jak?
Chodzi mi o to, co jest bardziej wydajne: taki zapis jak wyżej czy 3 vectory<int>?
Z góry dzięki za pomoc.

Pozostało 580 znaków

2014-12-12 19:27
0

Wewnętrznie vector przechowuje dane jako zwykłą tablicę, więc są w pamięci po kolei, ale nie da się utworzyć wektora tablic. W zamian można użyć wektor wektorów.

lub vector<array<int,3>> - Sopelek 2014-12-12 19:31

Pozostało 580 znaków

2014-12-12 19:44
Pijany Szczur
0
mad_penguin napisał(a):

ale nie da się utworzyć wektora tablic. W zamian można użyć wektor wektorów.

Jak się nie da jak się da? Przecież to jest w zasadzie coś w stylu: int[3]* wsk = new (int[3])[10];
Wektor wektorów jest na pewno mniej wydajny -> pamięć każdego pod-wektora może być dowolnie porozrzucana...

Nie da się utworzyć tego o co pyta autor, bo zwykła tablica nie spełnia wymagań jakie są narzucone na elementy vectora. - Sopelek 2014-12-12 20:58

Pozostało 580 znaków

2014-12-12 21:09
Pijany Szczur
0

Nie da się utworzyć tego o co pyta autor, bo zwykła tablica nie spełnia wymagań jakie są narzucone na elementy vectora. - Sopelek 10 minut temu

@Sopelek U mnie w VS 2013 jakoś to działa.
O jakich wymaganiach piszesz?

Z cppreference "T must meet the requirements of CopyAssignable and CopyConstructible. " tablice nie spełniają tego. Jeśli ci to działa to pewnie jakieś dziwne rozszerzenie kompilatora. - Sopelek 2014-12-12 21:22

Pozostało 580 znaków

2014-12-12 21:45
Pijany Szczur
0

@Sopelek faktycznie. A w takim razie czy na pewno array to spełnia? Bo w końcu to praktycznie to samo co tradycyjna tablica (?)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0