C++ Vektor-max_size();
Auf 32-bit-System.
std::vector<char>::max_size()
gibt 232-1, Größechar
— 1 bytestd::vector<int>::max_size()
gibt 230-1, Größeint
4 bytestd::vector<double>::max_size()
gibt 229-1, Größedouble
— 8-byte -
kann mir jemand sagen max_size()
hängt davon ab, was?
ist und was der Rückgabewert von max_size()
wenn es läuft auf 64-bit-system.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einfach die Antwort von
Oder wir können die Antwort von
max_size()
ist die theoretische maximale Anzahl der Elemente, die sein könnte in deiner vector. Auf einem 32-bit-system ist, könnten Sie in der Theorie zuordnen 4Gb == 2^32 2^32char
Werte, 2^30int
Werte oder 2^29double
Werte. Es scheint, dass Ihre Implementierung ist mit diesem Wert, aber 1 subtrahieren.Natürlich, Sie konnte nie wirklich zuordnen, einen Vektor, der großen; Sie laufen aus Speicher, lange bevor dann.
Es ist keine Voraussetzung, auf welchen Wert
max_size()
gibt andere als die, die Sie nicht zuordnen ein Vektor größer als das. Auf einem 64-bit-system kann es zurückgeben 2^64-1 fürchar
oder es zurückgeben könnte einen kleineren Wert, denn das system hat nur einen begrenzten Speicherplatz. 64-bit-PCs sind oft beschränkt auf einen 48-bit-Adressraum sowieso.max_size() gibt
also ich nehme an, dass der maximale Wert ist von der Implementierung abhängig. Auf meinem Rechner den folgenden code
Ausgabe:
also die Formel 2^(64-Größe(Typ))-1 korrekt sieht für diesen Fall als gut.