C++ vecteur taille max();
sur système 32 bits.
std::vector<char>::max_size()
retourne la valeur 2 32-1, la taille de l'char
- 1 octetstd::vector<int>::max_size()
retourne la valeur 2 30-1, la taille de l'int
- 4 octetsstd::vector<double>::max_size()
retourne la valeur 2 29-1, la taille de l'double
- 8 octets
quelqu'un peut me dire max_size()
dépend de quoi?
et quelle sera la valeur de retour de max_size()
si elle fonctionne sur un système 64 bits.
3 réponses
max_size()
est le nombre maximal théorique d'éléments qui pourraient être mis dans votre vecteur. Sur un système 32 bits, vous pouvez en théorie attribuer 4Gb = = 2^32 ce qui est 2^32 char
valeurs, 2^30 double valeurs. Il semblerait que votre implémentation utilise cette valeur, mais en soustrayant 1.
bien sûr, vous ne pourrez jamais allouer un vecteur aussi grand; vous manquerez de mémoire bien avant cela.
il n'y a aucune exigence sur la valeur max_size()
les retours autres que celui que vous ne pouvez pas allouer un vecteur plus grand que cela. Sur un système 64 bits, il pourrait revenir 2^64-1 char
, ou il pourrait retourner une plus petite valeur parce que le système n'a qu'un espace mémoire limité. Les PC 64 bits sont souvent limités à un espace d'adresse de 48 bits de toute façon.
max_size () retourne
donc je suppose que la valeur maximale dépend de l'implémentation. Sur ma machine le code suivant
std::vector<int> v;
cout << v.max_size();
produit de sortie:
4611686018427387903 // built as 64-bit target
1073741823 // built as 32-bit target
donc la formule 2^(64-taille(type))-1 semble correcte.
il suffit d'obtenir la réponse par
Vector<data-type>v;
Cout<< v.max_size();
Ou nous pouvons obtenir la réponse par
(2^bit of system)/sizeof(datatype) -1
Eg for 64 bit system
Iong long datatype has size =8 bit
Ans =(2^64)/8 -1
2305843009213693951