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

Lista, a indeksy C++

VPS Starter Arubacloud
0 głosów
599 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ź 88 wizyt
pytanie zadane 13 marca 2020 w C i C++ przez MiKasProgramista Początkujący (350 p.)
+3 głosów
1 odpowiedź 1,836 wizyt
pytanie zadane 14 kwietnia 2015 w C i C++ przez achilles147 Dyskutant (9,580 p.)
0 głosów
1 odpowiedź 2,376 wizyt
pytanie zadane 15 kwietnia 2018 w C i C++ przez kikosiak Obywatel (1,010 p.)

92,452 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...