Was ist das capacity()
von einem, std::vector
das mit dem Standardkonstruktor erstellt wird? Ich weiß, dass das size()
Null ist. Können wir feststellen, dass ein standardmäßig konstruierter Vektor keine Heap-Speicherzuordnung aufruft?
Auf diese Weise wäre es möglich, ein Array mit einer beliebigen Reserve unter Verwendung einer einzelnen Zuordnung zu erstellen, wie z std::vector<int> iv; iv.reserve(2345);
. Nehmen wir an, ich möchte aus irgendeinem Grund die size()
2345 nicht starten .
Zum Beispiel unter 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;
}
gedruckt 0,10
. Ist es eine Regel oder ist es vom STL-Anbieter abhängig?
swap
bleiben alle Iteratoren und Referenzen gültig (außer end()
s). Das bedeutet, dass ein Inline-Puffer nicht möglich ist.