Le C++ moderne ne permet pas de déterminer la taille d'un tableau dans le temps d'exécution. Comme les autres réponses spécifiées c99 le permet. La meilleure approche consiste à utiliser des vecteurs. Par exemple, essayez de compiler ce code dans Microsoft Visual Studio et voyez ce qui se passe.
#include <iostream>
using namespace std;
int main()
{
int size;
cin >> size;
int arr[size]; // 8th line
}
erreur (s):
source_file.cpp(8): error C2131: expression did not evaluate to a constant
source_file.cpp(8): note: failure was caused by non-constant arguments or reference to a non-constant symbol
source_file.cpp(8): note: see usage of 'num'
Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23506 for x64
Ce que vous devez utiliser est des vecteurs. Quel est le vecteur, il détermine la taille à l'exécution. Vous pouvez mettre plus d'éléments à l'intérieur et la taille sera plus grande. Vous pouvez supprimer plus d'éléments en déplacement, puis la taille sera réduite.
Mais attention, ne mélangez pas la capacité avec la taille. Voici un exemple de code pour vous permettre de voir comment fonctionne la capacité.
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> v;
cout << "Adding elements!" << endl;
for(int i = 0; i < 10; i++)
{
v.push_back(6);
cout << "Capacity: " << v.capacity() << endl;
}
cout << "Removing elements!" << endl;
for(int i = 0; i < 10; i++)
{
v.pop_back();
cout << "Capacity: " << v.capacity() << endl;
}
}
Linux Sortie 64 bits:
Adding elements!
Capacity: 1
Capacity: 2
Capacity: 4
Capacity: 4
Capacity: 8
Capacity: 8
Capacity: 8
Capacity: 8
Capacity: 16
Capacity: 16
Removing elements!
Capacity: 16
Capacity: 16
Capacity: 16
Capacity: 16
Capacity: 16
Capacity: 16
Capacity: 16
Capacity: 16
Capacity: 16
Capacity: 16
Même si je retire les éléments plus tard, la capacité restera à sa dernière valeur. La capacité renvoie la taille de l'espace de stockage actuellement alloué au vecteur, exprimée en termes d'éléments.
La taille renvoie le nombre d'éléments dans le vecteur.
Amusez-vous, et bonne chance!
Modifier: La capacité passe également de OS à OS.
Microsoft sortie 64 bits:
Adding elements!
Capacity: 1
Capacity: 2
Capacity: 3
Capacity: 4
Capacity: 6
Capacity: 6
Capacity: 9
Capacity: 9
Capacity: 9
Capacity: 13
Removing elements!
Capacity: 13
Capacity: 13
Capacity: 13
Capacity: 13
Capacity: 13
Capacity: 13
Capacity: 13
Capacity: 13
Capacity: 13
Capacity: 13