The C + + Standard Template Library innehåller två likartade men ändå distinkt behållare : vektorn och listan . En vektor är en uppsättning av sekventiellt ordnade uppgifter som kan växa eller krympa dynamiskt , en lista är en uppsättning länkade objekt som inte nödvändigtvis är sekventiellt ordnade i minnet , men kan sekventiellt nås eftersom varje objekt har en länk till nästa objekt . Lära skillnaderna mellan vektor och listan kan hjälpa dig att skriva mer optimerade lösningar i C + + . Insertion Hastighet
Uppgifterna av en vektor ordnas sekventiellt i minnet , vilket innebär att om du infogar ett objekt i början av en vektor måste varje objekt i Vector flyttas " ned " genom ett . Detta är beräkningsmässigt dyrt, särskilt för stora vektorer . Denna prestandaförlust kommer när ett objekt infogas eller tas bort från valfri plats utom det sista elementet i vektorn . Med en lista , är uppgifterna inte nödvändigtvis ordnade sekventiellt i minnet , utan innehåller varje objekt i listan en länk till nästa objekt i listan . När du sätter in en lista , kan objektet placeras var som helst i minnet , vilket gör att du sätter in en lista mycket billigare än att sätta in i en vektor .
Sortering
listan behållaren har en inbyggd slags funktion som gör att du kan sortera poster baserat på en givna kriterier . Vektorn , dock har inte denna inbyggda funktion , och därför måste du skriva sortering koden själv om du vill sortera en vektor .
Random Access
Listor har långsammare direktåtkomstskurar gånger än vektorer . I en vektor , kan ett element nås direkt med sitt index . Detta ger vektorn mycket snabb random access tid. Med en lista , å andra sidan , kan du bara direkt tillgång till den första och sista element , du måste iterera igenom listan för att komma åt andra delar , vilket kan vara mycket långsam för stora listor Addera storleksändring .
vektorer växa dynamiskt som objekt läggs till dem . När en vektor växer , fördubblar det antalet objekt den kan innehålla . Detta kan tvinga hela vektorn som skall flyttas till en annan plats i minnet , som kan vara beräkningsmässigt dyrt. Listor behöver inte lagra sina element intill varandra i minnet , och kan därför växa eller krympa ett objekt i taget utan att någonsin behöva kopiera hela listan till en ny plats .