The C + + Standard Template Library indeholder to lignende alligevel adskilte beholdere : vektor og listen. En vektor er et sæt sekventielt arrangeret data , der kan vokse eller krympe dynamisk , en liste er et sæt af forbundne elementer, der ikke nødvendigvis er sekventielt arrangeret i hukommelsen , men kan sekventielt åbnes, fordi hvert element har et link til det næste punkt . Læring forskellene mellem vektoren og listen kan hjælpe dig skrive mere optimerede løsninger i C + + . Indsættelse Speed
data indeholdt i en vektor er arrangeret sekventielt i hukommelsen , hvilket betyder, at hvis du indsætter et element i starten af en vektor , skal hvert element i vektoren blive flyttet "ned " af én . Dette er beregningsmæssigt dyre , især for store vektorer . Denne præstation straf kommer , når et element er indsat eller fjernet fra ethvert sted , undtagen det sidste element af vektoren . Med en liste , er dataene ikke nødvendigvis arrangeret sekventielt i hukommelsen , men i stedet hvert element i listen indeholder et link til det næste punkt på listen. Når du indsætter i en liste , kan elementet placeres hvor som helst i hukommelsen , hvilket gør indsættelse i en liste meget billigere end at indsætte i en vektor .
Sortering
listen container har en indbygget i en slags funktion, der giver dig mulighed for at sortere elementer baseret på et givet kriterium . Vektoren , dog ikke har denne indbyggede funktion , og derfor skal du skrive sortering koden selv hvis du ønsker at sortere en vektor.
Random Access
< br >
Lister har langsommere random access gange end vektorer. I en vektor , kan et element tilgås direkte af sit indeks . Dette giver vektoren meget hurtig access tid . Med en liste , på den anden side kan du kun direkte adgang til første og sidste elementer , du skal gentage gennem listen for at få adgang til andre elementer , og det kan være meget langsom for store lister
Ændre størrelse .
Vektorer dynamisk vækst som elementer føjes til dem. Når en vektor vokser, fordobler antallet af punkter, som det kan indeholde. Dette kan tvinge hele vektoren skal flyttes til et andet sted i hukommelsen , som kan være beregningsmæssigt dyrt. Lister behøver ikke at gemme deres elementer contiguously i hukommelsen , og kan derfor vokse eller skrumpe ét element ad gangen , uden nogensinde at skulle kopiere hele listen til en ny placering .
< Br >