Sobes.tech
Junior

C++-də vector və list konteynerləri arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

std::vector dinamik bir massivdir. Məlumatlar ardıcıl yaddaş blokunda saxlanılır.

vector-in üstünlükləri:

  • İndeksə görə sürətli giriş (O(1)).
  • Yaxşı məlumat lokalizasiyası, prosessor keşi üçün faydalıdır.
  • Sona əlavə etmə/çıxarma sürətlidir (orta hesabla O(1)).

vector-in çatışmazlıqları:

  • Təsadüfi yerə əlavə etmə/çıxarma mürəkkəbliyi (O(n)).
  • Ölçünün artması ilə yaddaşın yenidən ayrılması, elementlərin kopyalanmasını tələb edir.

std::list iki tərəfli bağlı siyahıdır. Hər element əvvəlki və növbəti elementlərə göstəricilər saxlayır.

list-in üstünlükləri:

  • Hər hansı yerə əlavə etmə/çıxarma mürəkkəbliyi (O(1)), mövqeyi tapdıqdan sonra (bu O(n) ola bilər).
  • Ardıcıllıq olmayan yaddaş blokuna ehtiyac yoxdur.

list-in çatışmazlıqları:

  • İndeksə görə yavaş giriş (O(n)).
  • Hər element daha çox yaddaş tutar (göstəricilər səbəbindən).
  • Məlumatların pis lokalizasiyası.

Əsas fərq:

Xüsusiyyət std::vector std::list
Məlumat strukturu Dinamik massiv İki tərəfli bağlı siyahı
Məlumatların saxlanması Ardıcıllı yaddaş Nodelər və göstəricilər
İndeksə görə giriş O(1) O(n)
Əlavə və silmə O(n) (yalnız sona yaxın) O(1) (iterator sonrası)
Lokalizasiya Yaxşı Pis
Yaddaş sərfi Elementlər Elementlər + göstəricilər

Seçim vectorlist arasında, konteyner ilə edilən tipik əməliyyatlara əsaslanır. Əgər təsadüfi giriş və sona əlavə etmə/silme tez-tezdirsə, vector üstünlük təşkil edir. Əgər siyahının ortasında tez-tez əlavə və silmə vacibdirsə, list üstünlükdür.