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

Vector vs Lista

Object Storage Arubacloud
+3 głosów
1,853 wizyt
pytanie zadane 14 kwietnia 2015 w C i C++ przez achilles147 Dyskutant (9,580 p.)
Witam piszę ponieważ natknołem na małą zagwozdkę. Otóż chce stworzyć jakiś kontener, z którego będe mógł wylosować jakiś dowolny element a następnie go usunąć. Zastanawiałem się na początku nad użyciem std::vector<> ponieważ posiada on iterator swobodnego dostępu i można łatwo odwoływać się do elementów.

np. losuje sobie liczbe n=6 , następnie odwołuje się do vectora MyVector[n] i moge sobie działać na wylosowanym obiekcie. Następnie trzeba go usunąć więc używam funkcji vector.erease(n). Problem tkwi tutaj w bardzo słabej efektywności ponieważ za każdym razem kiedy dodaje element do wektora lub usuwam tak naprawdę kopiuję całą tablicę. (raczej kiepsko przy większej ilości danych)

rozwiązanie z listą wydaje się bardziej efektywne ponieważ lista nie ma układu takiego jak tablica i można swobodnie dodawać i usuwać z niej elementy bez utraty na jakości. Ale znowu jak wylosować losowy element?

Bardzo prosiłbym o jakieś sugestie:)

1 odpowiedź

+3 głosów
odpowiedź 14 kwietnia 2015 przez daan Pasjonat (17,640 p.)
wybrane 15 kwietnia 2015 przez achilles147
 
Najlepsza
no cóż taka jest specyfika kontenerów :D każdy ma jakieś wady i zalety jeżeli chodzi o liste musiałbyś po prostu przechodzić za każdym razem przez całość (od początku lub od końca) do danego elementu jest to oczywiscie wolniejsze od dostępu bezpośredniego jak w vectorze jednak myśle że lepsze od kopiowania za każdym razem dużej ilości danych, słyszałeś o kontenerach nieuporządkowanych ? przyjrzyj się może unordered_set może to jakoś pomoże :)
komentarz 14 kwietnia 2015 przez achilles147 Dyskutant (9,580 p.)
też się nad tym zastanowiłem i postanowiłem skorzystać z listy i z funkcji std::advance(), która pozwoli łatwo przesuwać iterator:). Z chęcią się przyjrzę tym kontenerką dzięki za response!

Podobne pytania

0 głosów
2 odpowiedzi 621 wizyt
pytanie zadane 4 lutego 2017 w C i C++ przez Lukasz95 Bywalec (2,160 p.)
0 głosów
1 odpowiedź 715 wizyt
pytanie zadane 13 czerwca 2020 w C i C++ przez amtrax Dyskutant (9,630 p.)
0 głosów
0 odpowiedzi 63 wizyt

92,583 zapytań

141,434 odpowiedzi

319,668 komentarzy

61,966 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...