Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Deklaracja kontenerow asocjacyjnych przechowujacych statyczne tablice wielowymiarowe

Ostatnio zmodyfikowano 2013-08-04 17:32
Autor Wiadomość
Mr.J
Temat założony przez niniejszego użytkownika
Deklaracja kontenerow asocjacyjnych przechowujacych statyczne tablice wielowymiarowe
» 2013-08-04 16:33:23
Witam, zadałem jakiś czas temu podobne pytanie, ale wtedy jeszcze sam nie wiedziałem co chce zrobić, napisałem to źle i temat poszedł do śmietnika.

Piszę grę 2D(jest to dla mnie forma nauki, która stwarzając mi pewne problemy motywuje mnie do dalszej nauki, więc proszę nie pisać postów w stylu "zabierasz się za pisanie gry, a nie wiesz takich rzeczy!", gdyż na tym polega sytuacja przed, która się postawiłem :)) ,która ma stwarzać iluzje posiadania wielu poziomów w gorę/dół i jednocześnie muszę mieć kontrolę który jej poziom jest wczytywany w danym momencie. Zrobiłem to wszystko swoim sposobem i działa, ale teraz chcę to napisać w inny sposób:

Chce wstawiać np. poziom -2 w całości do kontenera "map" z kluczem -2 i tu pojawia się moje pytanie, w jaki sposób zadeklarować taki kontener aby przyjmował całą tablice dwuwymiarową?
Czy w miejscu rodzaju zmiennych jakie przechowuje muszę napisać tylko "Tile[][]" czy konieczne jest tez wpisanie ilości przechowywanych kafelkow przez taka tablice czyli np. "Tile[32][32]" ?

Oraz drugie pytanie czy modyfikacja takiej tablicy wewnątrz kontenera wiąże się z przekopiowaniem starej, usunięciem jej, modyfikacja kopii, po czym wklejeniu kopii do kontenera, czy program po prostu modyfikuje taka tablicę wewnątrz kontenera?      
P-89477
Monika90
» 2013-08-04 17:04:38
Jeżeli klucze są liczbami, które należa do "ciągłego" przedziału np. wszystkie liczby od -10 do +100, to zamiast map lepiej jest użyć tablicy lub std::vectora.

Tablice wbudowane nie mogą być elementami standardowych kontenerów, bo są niekopiowalne. Ale std::array<T, N> może być. Jednek jeśli te tablice mają mieć różne rozmiary, to std::array odpada, bo rozmiar jest cześcią jej typu.
P-89481
Mr.J
Temat założony przez niniejszego użytkownika
» 2013-08-04 17:32:49
Po pierwsze dziękuje za odpowiedź. Po drugie znalazłem już, że można zadeklarować kontener map tablica dwuwymiarowa typu array[y][x] z tym ze deklaracja musi wygladac tak: map<KEY, Tile(*)[y][x]>
no i oczywiście "y" oraz "x" muszą być stałymi, z tym ze w moim przypadku jednak operowanie na kafelkach w takim kontenerze jest bardzo mało wydajne...
Rozmiar tablic byłby stały dla każdego klucza, i przyznam szczerze że nigdy nie miałem do czynienia z std::array, zaraz sprawdzę jak to wygląda, ale już widzę że najlepsze rozwiązanie to tablica statyczna typu Tile[z][y][x] (czyli moje pierwsze rozwiązanie), tak naprawdę chciałem pokombinować z map z uwagi na ujemne poziomy (indeks nie może być ujemny), ale zrobię to trochę inaczej...

Dziękuje za pomoc i pozdrawiam,
Mr.J
P-89486
« 1 »
  Strona 1 z 1