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

Lista, a indeksy C++

Object Storage Arubacloud
0 głosów
615 wizyt
pytanie zadane 4 lutego 2017 w C i C++ przez Lukasz95 Bywalec (2,160 p.)
Cześć mam zaimplementowaną swoją listę , no i ogólnie nie da się odwoływać do poszczególnych jej elementów przez indeksy jak w zwykłej tablicy , a chciałbym móc tak robić(np. jak w vektorze się da). np. lista[4].dane.
Macie może artykuł do tego jak to zrobić ewentualnie podrzucić mi pomysł, jeśli dobrze myślę to trzeba przeciążyć operator [] , dzięki za odpowiedź z góry.

2 odpowiedzi

+1 głos
odpowiedź 4 lutego 2017 przez Wi_ktos Bywalec (2,950 p.)
Jak chcesz mieć dostęp do danych o średniej złożoności czasowej O(1) to zaimplementuj vector a nie baw się w listę. Lista zapewnia złożoność czasową O(N) w średnim przypadku. Morał jest taki, że lista to właśnie taka struktura danych, że aby dobrać się do elementu i musisz przejść po całej liście od początku aż do elementu i. Idea tej struktury nie pozwala aby odnosić się do niej za pomocą indeksu po w takim razie po co by ktoś się bawił w implementacje i listy i vectora w języku C++ skoro i tak to byłoby de facto to samo.
Poczytaj coś o podstawowych strukturach danych w internecie a na pewno wszystko lepiej Ci to wyjaśni.
Pozdrawiam.
+1 głos
odpowiedź 4 lutego 2017 przez Evelek Nałogowiec (28,960 p.)
Kontener list jest listą podwójnie związaną. Przechodzenie po liście w obu kierunkach umożliwia to, że każdy element oprócz pierwszego i ostatniego jest związany z sąsiadującymi z nim elementami. Jest zasadnicza różnica między list a vector - w kontenerze list możesz wstawić element w dowolnym miejscu i wielkość kontenera powiększy się automatycznie. Podobnie w drugą stronę z usuwaniem elementów listy. Zaś w kontenerze vector możesz wstawiać i usuwać tylko ostatni element, odpowiednio za pomocą metod push_back() oraz pop_back().

Podsumowując: kontenery te mają inne właściwości - vector umożliwia dostęp swobodny do elementów, zaś list umożliwia wstawianie i usuwanie elementów w dowolne miejsca. Należy dostosować typ kontenera do tego, co się chce zrobić w programie.

Podobne pytania

0 głosów
1 odpowiedź 89 wizyt
pytanie zadane 13 marca 2020 w C i C++ przez MiKasProgramista Początkujący (350 p.)
+3 głosów
1 odpowiedź 1,844 wizyt
pytanie zadane 14 kwietnia 2015 w C i C++ przez achilles147 Dyskutant (9,580 p.)
0 głosów
1 odpowiedź 2,390 wizyt
pytanie zadane 15 kwietnia 2018 w C i C++ przez kikosiak Obywatel (1,010 p.)

92,539 zapytań

141,382 odpowiedzi

319,478 komentarzy

61,928 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!

...