c++ vecteur de code source
Je suis en train d'essayer d'obtenir le vecteur de code source pour voir comment la norme std ou stl vecteur est mis en œuvre.
C'est pour l'objet de l'apprentissage. Maintenant, la question est où puis-je trouver le code source.
Même le code source de l'autre C++ Contenant également utile.
Il est toujours bon de regarder et d'apprendre. Mais je ne suis pas sûr de regarder le code source de quelque chose d'aussi complexe que
De nombreux STL implémentations d'inclure un grand nombre de code pour des choses comme l'itérateur de débogage - ça va être difficile à lire et il contient beaucoup de code qui n'est pas directement pertinent à ce que le vecteur n'. Peut-être pas le meilleur endroit pour apprendre.
std::vector
est un bon choix. Assurez-vous que vous pourriez apprendre beaucoup de choses mais on peut aussi se perdre très facilement.De nombreux STL implémentations d'inclure un grand nombre de code pour des choses comme l'itérateur de débogage - ça va être difficile à lire et il contient beaucoup de code qui n'est pas directement pertinent à ce que le vecteur n'. Peut-être pas le meilleur endroit pour apprendre.
OriginalL'auteur vrbilgi | 2010-11-29
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas de "standard" vecteur - la norme définit le comportement et l'interface (et certains détails de mise en œuvre, tels que le stockage contigu), mais le code est une question pour les rédacteurs du compilateur à déterminer.
Votre compilateur doit avoir son propre
<vector>
fichier d'en-tête, avez-vous vérifié ceci sur votre chemin? Une fois que vous trouvez que vous devriez aussi voir les autres conteneurs STL dans leurs en-têtes. La liste Microsoft Visual C++ est ici, y compris certains qui sont leur propriété, alors faites attention pour que par le dessous de l'échantillon avertissement:Sur mon installation de Visual C++ Express 2010, ils sont dans ce dossier:
OriginalL'auteur Steve Townsend
Différente de la durée de fonctionnement est différente de la mise en œuvre.
Mais je suppose que c'est ce que vous voulez, largement utilisé gcc mise en œuvre:
https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/std/vector
C'est le principal fichier d'en-tête, et la mise en œuvre est en
https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/bits/stl_vector.h
et
https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/bits/stl_bvector.h
Il utiliser une MACRO pour rendre le code à exécuter dans de bonnes performances et d'ajustement de la variable de la situation, mais il est difficile à lire, je vous souhaite bonne chance.
OriginalL'auteur Yang Yuan
Vous êtes ici: http://www.sgi.com/tech/stl/download.html.
OriginalL'auteur tunnuz
La plupart, si pas tous les
std::vector
code source doit être contenue dans la<vector>
en-tête lui-même.De la bibliothèque standard des conteneurs sont tous les modèles de classe et en tant que tel, leurs définitions et les définitions de l'ensemble de leurs fonctions de membre sont contenues dans leurs en-têtes.
Noter qu'il n'existe pas de Véritable mise en Œuvre des conteneurs; chaque C++ de la Bibliothèque Standard de mise en œuvre est libre de mettre en œuvre chaque conteneur comme il l'entend, tant qu'il répond aux exigences pour le conteneur.
OriginalL'auteur James McNellis