• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jaki sposób użyć na przechowywanie danych

0 głosów
976 wizyt
pytanie zadane 31 grudnia 2016 w C i C++ przez Nekronomik Użytkownik (600 p.)
Witam, problem leży głownie przy tablicach obiektu. Jak rozpoczynałem naukę to wykorzystywałem tablice statyczne w których przechowywałem dane obiektów. Problem już się pojawił gdy obiekty miały zapamiętywać się nawzajem podczas ataku przez zrobienie porządku w tablicy.
Więc kolejny sposób jaki wykorzystałem to stworzenie tablicy obiektów statycznych i na wskaźnikach np Obiekt *obiekt_w[100], obiekt_s[100]; i problem znikł. Zapisałem wszystkie adresy obiekt_s do *obiekt_w i działałem tylko na adresach, obiekt_w[i]=&obiekt_s[i]; dzięki czemu obiekt znał adres i mógł zapamiętać dużo celów.
Kolejny pomysł to wykorzystanie tablic dynamicznych dla klas, chciałem aby ona zwiększała się lub zmniejszała w zależności ile mam obiektów. Z ciekawości zrobiłem test jak długo trwa stworzenie nowej tablicy dynamicznej o innym rozmiarze i przeniesienie wszystkich obiektów do niej itd. To dla 100 obiektów czas wyniósł 0.1 sek to przy moim odświeżaniu danych obiektów 60Hz klatka wynosiła by 6 sek.
Tak wiec tablice dynamiczne i ciągłe zmienianie ich wielkości odpada(chyba że jest inny spsób), albo z góry ustalę jak we wcześniejszych sposobach jej wielkość. Z zapamiętywaniem celu też jest problem bo przy każdym stworzeniu nowej tablicy dynamicznej skopiowane obiekty maja nowe adresy, wiec obiekt będzie atakował adres którego już nie ma

Nie wiem jak z vectorami, ile czasu im zajmuje np mielenie 100,200 lub więcej obiektów przez siebie 60 razy na sek. Puki co jeszcze nie sprawdzam.

Może ktoś inny zna sposób na przechowywanie obiektów i zarządzanie nimi, puki co sposób drugi bardziej mi odpowiada ale czy tak powinno się to robić ?

1 odpowiedź

0 głosów
odpowiedź 31 grudnia 2016 przez morele123 Gaduła (4,790 p.)
A po co właściwie te obiekty zapamiętujesz? Nie napisałeś nigdzie specyfikacji, co ci jest właściwie potrzebne w twojej strukturze danych. Czy chcesz dodawać kolejne obiekty w jakimś porządku do tej tablicy, czy może to bez znaczenia. Ja na początek to polecam ci zapamiętywać dane w liście.
komentarz 1 stycznia 2017 przez operator Stary wyjadacz (10,920 p.)
Przepraszam ale powodzenia w programowaniu hahahha
komentarz 1 stycznia 2017 przez morele123 Gaduła (4,790 p.)
To co napisałem, to tylko w celach edukacyjnych nigdy nie spotkasz tak zapisanego programu.
komentarz 1 stycznia 2017 przez operator Stary wyjadacz (10,920 p.)
Sooo... Czy ty wiesz co to jest algorytm HeapFastConstruct? Bo chyba nie. Nadal mam z ciebie beke ziom :D Wszystkie bazy danych nawet na tym forum z tego korzystają hahahaha
komentarz 1 stycznia 2017 przez morele123 Gaduła (4,790 p.)
Ale wciąż mówisz o tworzeniu drzewa, a nie o odbudowie drzewa po usunięciu elementu. Po za tym ten algorytm wcale nie stworzy ci drzewa o czasie logarytmicznym.
komentarz 1 stycznia 2017 przez morele123 Gaduła (4,790 p.)
Może napisze od razu post w którym przytoczę o co chodzi, bo dużo postów zostało tu napisanych bez konkretów żadnych.

A, więc ja:

Twierdzę, że na liście usuwanie elementu zajmuje O(1) i nie da się utworzyć struktury danych w czasie mniejszym niż O(n).

Mądrala i operator:

Twierdzą, że drzewo można stworzyć w czasie logarytmicznym oraz usuwanie elementu jest szybsze niż O(1).

Co na to wszystko wikipedia:

Lista: Operacja usuwania: O(1)

Drzewo: Operacja usuwania O(logn)

Podobne pytania

0 głosów
0 odpowiedzi 237 wizyt
pytanie zadane 26 listopada 2016 w HTML i CSS przez yossarian22 Początkujący (340 p.)
0 głosów
1 odpowiedź 938 wizyt
0 głosów
2 odpowiedzi 1,969 wizyt
pytanie zadane 18 grudnia 2019 w C i C++ przez tymek112 Obywatel (1,550 p.)

93,778 zapytań

142,737 odpowiedzi

323,390 komentarzy

63,382 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...