Puis-je utiliser un tableau de longueur variable C en C ++ 03 et C ++ 11?

C a une fonctionnalité vraiment cool appelée tableaux de longueur variable. Il est disponible dans les versions C90 et supérieures et permet de différer la taille de la masortingce jusqu’à son exécution. Voir le manuel GCC 6.19 Tableaux de longueurs variables .

Je travaille en C ++. À std=c++11 , je détecte un échec de compilation en raison de l’utilisation de alloca sous Cygwin. Je souhaite passer à des tableaux de longueur variable, si possible. Je veux aussi essayer d’éviter std::vector et std::array parce que je veux restr en dehors du gestionnaire de mémoire. Je crois que chaque petit geste compte, alors je suis heureux de profiter de ces occasions (que certains considèrent comme des judas).

Puis-je utiliser un tableau de longueur variable en C ++ 03 et C ++ 11?

Les VLA ne sont pas en C ++ 03 ou C ++ 11 standard. Vous devrez donc les éviter si vous voulez écrire du code conforme ssortingctement standard (et utiliser par exemple std::vector , qui utilise généralement heap pour ses données – mais vous pouvez utiliser votre propre allocateur …).

Cependant, plusieurs compilateurs C ++ (récents GCC & Clang ) acceptent les VLA comme une extension.

Il en va de même pour les membres de groupe flexibles ; ils ne sont pas standards en C ++ (seulement en C) mais certains compilateurs les acceptent.

Dynarray -s n’est pas entré dans la norme C ++ 11 …

Pas si vous voulez du code C ++ standard.

Aucune norme C ++ ne prend en charge les VLA, mais certains compilateurs C ++ le font en tant qu’extension spécifique du fournisseur.

Vous pouvez obtenir un effet similaire en C ++ en utilisant le vector standard. Notez que, contrairement aux VLA qui ne peuvent être dimensionnés qu’après leur création, un vector standard peut être redimensionné en fonction des besoins (sous réserve de l’exécution des opérations appropriées).