Was ist das capacity()von einem, std::vectordas 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?
swapbleiben alle Iteratoren und Referenzen gültig (außer end()s). Das bedeutet, dass ein Inline-Puffer nicht möglich ist.