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 vector və list 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.