tamaño vs capacidad de un vector?

Estoy un poco confundido sobre esto, ambos me parecen iguales. Aunque puede suceder que la capacidad y el tamaño puedan diferir en los diferentes comstackdores. cómo puede ser diferente También se dice que si nos quedamos sin memoria, la capacidad cambia.

Todas estas cosas son poco claras para mí.

¿Alguien puede dar una explicación? (Si es posible con un ejemplo o si puedo hacer una prueba en cualquier progtwig para entenderlo)

El tamaño no puede diferir entre múltiples comstackdores. El tamaño de un vector es la cantidad de elementos que contiene, que está directamente controlado por la cantidad de elementos que colocas en el vector.

La capacidad es la cantidad de espacio que el vector está utilizando actualmente. Debajo del capó, un vector simplemente usa una matriz. La capacidad del vector es el tamaño de esa matriz. Esto siempre es igual o mayor que el tamaño. La diferencia entre ellos es la cantidad de elementos que puede agregar al vector antes de que la matriz bajo el capó necesite ser reasignada.

Casi nunca deberías preocuparte por la capacidad. Existe para permitir que personas con limitaciones de rendimiento y memoria muy específicas hagan exactamente lo que desean.

Tamaño : la cantidad de elementos actualmente en el vector

Capacidad : cuántos elementos pueden caber en el vector antes de que esté “lleno”. Una vez lleno, agregar nuevos elementos dará como resultado la asignación de un nuevo bloque de memoria más grande y la copia de los elementos existentes en él.

Digamos que tienes un cubo. A lo sumo, este cubo puede contener 5 galones de agua, por lo que su capacidad es de 5 galones. Puede tener cualquier cantidad de agua entre 0 y 5, inclusive. La cantidad de agua actualmente en el cubo es, en términos de vectores, su tamaño. Entonces, si este cubo está medio lleno, tiene un tamaño de 2.5 galones.

Si intenta agregar más agua a un balde y se desbordará, necesitará encontrar un balde más grande. Así que obtienes un cubo con una capacidad mayor y viertes los contenidos del cubo viejo en el nuevo, luego agregas el agua nueva.

Capacidad: la cantidad máxima de cosas que el Vector / cubo puede contener. Tamaño: cantidad de cosas actualmente en el Vector / cubo.

size() te dice cuántos elementos tienes actualmente. capacity() te dice qué tan grande puede ser el tamaño antes de que el vector necesite reasignar la memoria por sí mismo.

La capacidad siempre es mayor o igual que el tamaño. No puede indexar más allá del elemento # size()-1 .

El tamaño es la cantidad de elementos en el vector. La capacidad es la cantidad máxima de elementos que el vector puede contener actualmente.

El tamaño es el número de elementos presentes en un vector

La capacidad es la cantidad de espacio que el vector está utilizando actualmente.

Comprendamos con un ejemplo muy simple:

 using namespace std; int main(){ vector vec; vec.push_back(1); vec.push_back(1); vec.push_back(1); cout<<"size of vector"< 

actualmente el tamaño es 3 y la capacidad es 4.

Ahora si retrocedemos un elemento más,

 using namespace std; int main(){ vector vec; vec.push_back(1); vec.push_back(1); vec.push_back(1); vec.push_back(1); cout<<"size of vector"< 

ahora el tamaño es: 4 capacidad es 4

ahora si tratamos de insertar un elemento más en el vector entonces el tamaño se convertirá en 5, pero la capacidad se convertirá en 8.

sucede en función del tipo de datos del vector , como aquí en este caso el vector en de tipo int , como sabemos el tamaño de int es de 4 bytes, por lo que el comstackdor asignará 4 bloques de memoria ... y cuando intentemos agregar el quinto elemento, vector::capacity() se duplica lo que tenemos actualmente.

el mismo sigue ... por ejemplo: si tratamos de insertar el noveno elemento, entonces el tamaño del vector será 9 y la capacidad será b 16 ..