¿Cuál es el capacity()
de un std::vector
que se crea utilizando el constructor predeterminado? Sé que el size()
es cero. ¿Podemos decir que un vector construido por defecto no llama a la asignación de memoria de pila?Capacidad inicial de vector en C++
De esta forma, sería posible crear una matriz con una reserva arbitraria utilizando una única asignación, como std::vector<int> iv; iv.reserve(2345);
. Digamos que, por alguna razón, no quiero para iniciar el size()
en 2345.
Por ejemplo, en Linux (g ++ 4.4.5, 2.6.32 del núcleo AMD64)
#include <iostream>
#include <vector>
int main()
{
using namespace std;
cout << vector<int>().capacity() << "," << vector<int>(10).capacity() << endl;
return 0;
}
impresos 0,10
. ¿Es una regla o depende del proveedor de STL?
El estándar no especifica nada sobre la capacidad inicial del vector, pero la mayoría de las implementaciones usan 0. –
No hay garantía, pero cuestionaría seriamente la calidad de cualquier implementación que asignara memoria sin que yo la solicite. –
@MikeSeymour No estoy de acuerdo. Una implementación de alto rendimiento podría contener un pequeño búfer en línea, en cuyo caso establecer la capacidad inicial() tendría sentido. – alastair