The C + + Standard Template Library inneholder to like likevel distinkt beholdere : vektor og listen . En vektor er et sett med sekvensielt ordnet data som kan vokse eller krympe dynamisk , en liste er et sett med koblede elementer som ikke nødvendigvis sekvensielt ordnet i minne , men kan sekvensielt nås fordi hver gjenstand har en kobling til det neste elementet. Lære forskjellene mellom vektor og listen kan hjelpe deg å skrive mer optimaliserte løsninger i C + + . Innsetting Speed
data som finnes med en vektor er ordnet sekvensielt i minnet , noe som betyr at hvis du setter inn et element i begynnelsen av en vektor , må hvert element i vektoren bli flyttet "ned " av en. Dette er beregningsmessig kostbar , spesielt for store vektorer. Denne ytelsen straffen kommer når en vare er satt inn eller fjernet fra alle steder bortsett fra den siste del av vektor. Med en liste , er dataene ikke nødvendigvis ordnet sekvensielt i minnet , i stedet inneholder hvert element i listen en link til neste element i listen. Når du setter inn en liste, kan elementet plasseres hvor som helst i minnet , noe som gjør sette inn en liste mye rimeligere enn å sette inn en vektor .
Sortering
listen container har en innebygd slags funksjon som lar deg sortere innhold basert på en gitte kriterier . Vektor , derimot , har ikke denne innebygde funksjonen , og du må derfor skrive sortering koden selv om du vil sortere en vektor .
Random Access
Lister har tregere random access ganger enn vektorer . I en vektor , kan et element nås direkte av indeksen . Dette gir vektoren meget rask random access tid . Med en liste , på den annen side, kan du bare direkte tilgang til den første og siste elementene , du må reagere gjennom listen for å få tilgang til andre elementer , og dette kan være veldig treg for store lister
Endre størrelse .
Vektorer vokse dynamisk som elementer legges til dem. Når en vektor vokser, dobler det antallet elementer det kan inneholde. Dette kan tvinge hele vektor som skal flyttes til et annet sted i minnet , som kan være beregningsmessig dyrt . Lister trenger ikke å lagre sine elementer contiguously i minnet , og kan derfor vokse eller krympe ett element om gangen uten å måtte kopiere hele listen til et nytt sted .