Apa dari capacity()
dari std::vector
yang dibuat menggunakan konstuktor default? Saya tahu bahwa size()
nilainya nol. Bisakah kita menyatakan bahwa vektor yang dibuat default tidak memanggil alokasi memori heap?
Dengan cara ini dimungkinkan untuk membuat array dengan cadangan arbitrer menggunakan alokasi tunggal, seperti std::vector<int> iv; iv.reserve(2345);
. Katakanlah karena alasan tertentu, saya tidak ingin memulai size()
pada 2345.
Misalnya, di Linux (g ++ 4.4.5, kernel 2.6.32 amd64)
#include <iostream>
#include <vector>
int main()
{
using namespace std;
cout << vector<int>().capacity() << "," << vector<int>(10).capacity() << endl;
return 0;
}
dicetak 0,10
. Apakah ini aturan, atau tergantung vendor STL?