Je vois actuellement beaucoup de questions qui sont étiquetées C ++ et portent des tableaux de manipulation. Donc, je me demande pourquoi tant de développeurs chèymes sont des tableaux sur
Il y a même des questions qui posent des questions sur les méthodes / fonctionnalités des tableaux qu'un std :: vecteur code> fournirait sans aucune magie. P>
std :: vecteur code> en c ++? p>
5 Réponses :
En général, je préfère fermement utiliser un vecteur sur un tableau pour un travail non trivial; Cependant, il y a quelques avantages des tableaux: P>
Aussi: * Les tableaux sont plus rapides; * Les matrices peuvent être initialisées statiquement (tandis que les vecteurs sont toujours initialisés de manière dynamique, au moment de l'exécution)
Hélas la raison pour laquelle "tant de développeurs chèques choisi des tableaux sur STD :: Vector in C ++" est simplement parce qu'ils lisent des livres anciens / mauvais et sont désormais réticents à passer à un nouveau niveau de programmation. Je doute que beaucoup considèrent même aucun de vos points avant de décider de l'utilisation des tableaux. Aussi, quel que soit le vecteur fournit, tout programmeur doit être théoriquement capable d'utiliser des tableaux, car si vous ne comprenez pas les pointeurs et leur arithmétique, vous ne pouvez pas être un bon programmeur C ++
Parce que c ++ 03 n'a pas de littéraux vectoriels. L'utilisation de tableaux peut parfois produire un code plus succinct.
comparé à l'initialisation de la matrice: p> initialisation vectorielle peut sembler un peu verbeuse p>
J'irais pour STD :: Array disponible en C ++ 0x au lieu de tableaux simples pouvant également être initialisés comme des tableaux standard avec une liste d'initialistes P>
Je pense que c'est parce que de nombreux programmeurs C ++ proviennent de C et ne comprennent pas encore les avantages de l'utilisation de Vector code> et de toutes les goodies STL supplémentaires qui viennent gratuitement avec ses conteneurs. p>
Vous pouvez avoir raison. Mais vous pouvez toujours utiliser certaines des goodies supplémentaires (algorithmes STL) avec des tableaux.
Vous avez beaucoup plus de contrôle avec des tableaux p>
Que diriez-vous: p>
1) Vous avez affaire à des ensembles de données colossaux où les données doivent être mappées des fichiers et non attribués avec 2) code qui utilise un multiprocession sans verrouillage. Les hits de performance d'arrêt des fils de réaffectation (ou de toute autre "goodie stl") peuvent être inacceptables, d'où utilisez des tableaux d'utilisation, vous avez peut-être beaucoup plus de contrôle, vous devrez peut-être appeler beaucoup de fonctions pour suspendre d'autres threads avant de redimensionner n'importe quoi. p>
BTW, je traite habituellement avec 1 et 2 en même temps. Les tableaux de structures + pointres fonctionnent de manière merveilleuse, compilant avec C ++ parce que vous pouvez toujours utiliser certaines fonctionnalités C ++ ailleurs dans le code. Je suis sûr que je pouvais penser à beaucoup d'autres exemples si j'ai essayé assez fort p> malloc code> ou
neuf code> en raison de sa taille. Sous ce scénario inquiétant de ce qu'il faut faire si vous n'avez pas réservé suffisamment d'espace d'adresses au début, car je suppose que vous pouviez vous détendre - éteindre - remappe le fichier, sauf interdit par fragmentation d'adresse ou mon deuxième point. P >