C wektor ++ kod


Próbuję uzyskać kod źródłowy wektora, aby zobaczyć, jak zaimplementowano standardowy wektor std lub stl.
To jest do celów dydaktycznych. Teraz pytanie brzmi, gdzie mogę znaleźć kod źródłowy.
Pomocny jest także kod źródłowy innego kontenera C ++.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Nie ma wektorowego „standardu” - standard definiuje zachowanie i interfejs (a także niektóre szczegóły implementacji, takie jak trwałe przechowywanie), ale kod jest kwestią dla twórców kompilatorów.
Twój kompilator powinien mieć własny plik nagłówkowy
& < vector & >
. Czy sprawdziłeś to w ścieżce dołączania kompilacji? Gdy stwierdzisz, że powinieneś również zobaczyć inne kontenery STL w odpowiednich nagłówkach. Lista dla Microsoft Visual C ++ to

tutaj
http://msdn.microsoft.com/en-u ... .aspx, w tym niektóre zastrzeżone, więc uważaj na to w poniższym przykładzie zrzeczenia odpowiedzialności:

W programie Visual C ++ .NET 2003 członkowie
nagłówek
pliki
& < hash_map & >
i
& < hash_set & >
nie znajdują się już w
std, ale raczej przeniesiona
do przestrzeni nazw stdext. Zobacz stdext
Aby uzyskać więcej informacji, zobacz przestrzeń nazw.

Kiedy instaluję Visual C ++ Express 2010, znajdują się one w tym folderze:

c:\program files\microsoft visual
Studio 10.0\vc\include
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Różne środowiska wykonawcze mają różne implementacje.
Ale myślę, że właśnie tego chcesz, szeroko stosowanej implementacji gcc:

https://github.com/gcc-mirror/ ... ector
https://github.com/gcc-mirror/ ... ector
To jest główny plik nagłówkowy, a implementacja jest w

https://github.com/gcc-mirror/ ... tor.h
https://github.com/gcc-mirror/ ... tor.h
i

https://github.com/gcc-mirror/ ... tor.h
https://github.com/gcc-mirror/ ... tor.h
Używa MACRO, aby kod działał z dobrą wydajnością i pasował do zmiennych sytuacji, ale utrudnia czytanie, życzę wszystkiego najlepszego.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Większość, jeśli nie cały kod źródłowy
std :: vector
, powinna znajdować się w samym nagłówku
& < vector & >
.
Standardowe kontenery bibliotek to wszystkie szablony klas, dlatego ich definicje i definicje wszystkich funkcji składowych są zawarte w odpowiednich nagłówkach.
Zauważ, że nie ma prawdziwej implementacji żadnego z kontenerów; każda implementacja biblioteki standardowej C ++ może zaimplementować każdy kontener według własnego uznania, o ile spełnia on wymagania kontenera.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się