[C++] STL informatie

Pagina: 1
Acties:

  • Nexopheus
  • Registratie: Juni 2001
  • Laatst online: 28-01 13:50
Ben al druk aan het zoeken, maar ik kan niet echt iets concreets vinden wat STL nu precies voor staat.

Uit de voorbeelden lijkt het me een Template Library voor datastructuren. Klopt dit ?

Waar staat STL voor, Standard Template Library ?
Ik kan geen definitie vinden in de msdn library, sdk documentatie, enz...

Wellicht dat iemand hier me het eens haarfijn uit kan leggen. 8-)

Wat niet kan is nog nooit gebeurd


Verwijderd

Het staat er wel op alleen tamelijk onvindbaar in de online versie van msdn, bij deze het linkje :Y)

http://msdn.microsoft.com/library/en-us/vclang98/HTML/LIB_STL.asp?frame=true

  • Nexopheus
  • Registratie: Juni 2001
  • Laatst online: 28-01 13:50
Inderdaad erg lastig plekje, bedankt ik kan weer verder.

Wat niet kan is nog nooit gebeurd


  • Johannes
  • Registratie: Juni 2000
  • Laatst online: 14-09 23:09

Uit volle borst op weg naar nergens / Zonder reden zonder doel
Met m'n zeden en m'n zonden / En mijn angstig voorgevoel
Laat mij mijn kont tegen de krib / Laat mij dit goddeloze lied
Hef jij je handen maar ten hemel / Maar red mij niet


  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
http://www.sgi.com/tech/stl/index.html

Das de STL van SGI, met hele goede documentatie, die gebruik ik. Zitten ook meer klassen in, waaronder een Hashtable.

  • Nexopheus
  • Registratie: Juni 2001
  • Laatst online: 28-01 13:50
mmm, nu begrijp ik waarom mbravenboer de generics compiler voor Java gebruikt...!
Erg handig :)

Wat niet kan is nog nooit gebeurd


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Nexopheus: mmm, nu begrijp ik waarom mbravenboer de generics compiler voor Java gebruikt...!
Erg handig :)
Juistum :) . Het werkt al uitstekend en dus kan je je vast voorbereiden op de tijd dat de rest van java-wereld over gaat stappen ;) .

Trouwens: C# kent geen generics. Het schijnt echter dat ze dit wel willen opnemen, maar dat dit pas in een latere release zal komen (zie A Programmer's Intruction to C#: Chapter 35). Waarom ze dit niet gelijk hebben opgenomen is mij een volkomen raadsel. Mij lijk het verstandiger om wat meer tijd te besteden aan de voorbereiding dan dat later alles moet worden aangepast: de ECMA standaardisatie, de demo's, delen va de libraries die in C# geschreven zijn, en niet te vergeten alle snelle 'adopters' van C#. Erg dom dus |:( .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Nexopheus
  • Registratie: Juni 2001
  • Laatst online: 28-01 13:50
Op maandag 24 december 2001 13:36 schreef mbravenboer het volgende:

Juistum :) . Het werkt al uitstekend en dus kan je je vast voorbereiden op de tijd dat de rest van java-wereld over gaat stappen ;)
Ben al bezig met downloaden....
Weer een nieuw persoonlijk projectje :)
Waar haal ik toch de tijd vandaan.....?

Wat niet kan is nog nooit gebeurd


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Nexopheus: Ben al bezig met downloaden....
Je moet wel ff goed lezen hoe je hem moet gebruik in combinatie met javac, das nog een beetje tricky namelijk ;) . Zelf gebruik ik hem atlijd vanuit Ant, dat werkt een stuk makkelijker... Als je graag wilt, kan ik ff laat zien hoe je dit moet doen :) .
Waar haal ik toch de tijd vandaan.....?
Tis me ook een raadsel ;) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 15-09 22:39
Op maandag 24 december 2001 13:46 schreef mbravenboer het volgende:

Je moet wel ff goed lezen hoe je hem moet gebruik in combinatie met javac, das nog een beetje tricky namelijk ;)
Kep zelf een van die scriptjes die erbij zitten aangepast naar een batch bestand. Werkt prima.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Nexopheus
  • Registratie: Juni 2001
  • Laatst online: 28-01 13:50
Ja een ant build voorbeeld is altijd handig..

Wat niet kan is nog nooit gebeurd


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Ik ben nu niet thuis dus heb m'n ant files niet bij de hand. Ik zal deze morgen nog een keer een schop geven ;) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Ok, ik had nog wat beloofd :) .

Het is eigenlijk heel simpel: in de ant.bat of ant shell script in /bin directory moet je het ant commando veranderen in dit:
code:
1
$JAVACMD -Xbootclasspath/p:/usr/local/java/generics-ea/javac.jar -classpath "$LOCALCLASSPATH" -Dant.home= ... (zelfs als eerst)

In een build file moet je nu helaas ook nog wat opgeven:
code:
1
2
3
4
<javac
     srcdir="${javasrc.dir}"
     destdir="${build.dir}" deprecation="on"
     bootclasspath="/usr/local/java/generics-ea/collect.jar;/usr/java/j2sdk1.4.0/jre/lib/rt.jar;/usr/java/j2sdk1.4.0/jre/lib/jce.jar">

Uiteraard zijn bij jou de paden vast anders...

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Nexopheus
  • Registratie: Juni 2001
  • Laatst online: 28-01 13:50
Perfect bedankt.

Zal er in het nieuwe jaar wel mee gaan spelen..

Wat niet kan is nog nooit gebeurd


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 23:11
Op maandag 24 december 2001 13:07 schreef Nexopheus het volgende:
Ben al druk aan het zoeken, maar ik kan niet echt iets concreets vinden wat STL nu precies voor staat.

Uit de voorbeelden lijkt het me een Template Library voor datastructuren. Klopt dit ?

Waar staat STL voor, Standard Template Library ?
Ik kan geen definitie vinden in de msdn library, sdk documentatie, enz...

Wellicht dat iemand hier me het eens haarfijn uit kan leggen. 8-)
Haarfijn - dat gaat wel effe duren.

Om te beginnen: STL wordt gebruikt voor twee dingen: een C++ library ontwikkeld door HP en later door SGI, en ten tweede, het deel van die library wat in standaard C++ terecht is gekomen.

Er zijn grofweg drie hoofdcomponenten in de library:
* containers, daar gaan objecten in. Voorbeeld: vector<int> is een flexibele array van integers, en list<myClass> waar objecten van type myClass ingaan.
* iterators, die gebruikt worden om de elementen in een rij/serie aan te spreken. De syntax is zo gekozen dat een int* (pointer) de iterator is van een int[]. De eerdergenoemde containers hebben ook iterators, die heten vector<int>::iterator en list<myClass>::iterator. Containers hebben bovendien functies begin() en end() om bij die iterators te komen.
* algoritmen. Algoritmen werken altijd op iterators. Omdat pointers ook iterators zijn, werken de STL algoritmen dus ook op bestaande data.

Vanwege het gebruik van templates is de library heel flexibel: de container classes zijn geschreven voordat je 'myClass' geschreven is, maar ze werken er toch mee samen. Hetzelfde geldt voor de algoritmen: als je zelf een iterator class schrijft (bv voor files in een directory) dan werken de bestaande algoritmen daar ook mee samen.

Er zit redelijk wat overlap in deze categorieen; zo heeft elke container een constructor die een iterator range accepteert. Die iterators worden dan gekopieerd. Als je dat combineert met een iostream iterator dan kun je op die manier een vector<int> maken met alle ints van een bepaalde stream. Maar is die constructor nou een deel van de container, of een algoritme ?

Deze library kwam in 1994 beschikbaar voor de C++ standaard, die op dat moment bijna af was. Maar omdat de library toen al zo goed was is de C++ standaard 2~3 jaar uitgesteld om de library in te voegen. Het is dus geen Microsoft product; MS heeft een versie van de library ingekocht van Dinkumware voor VC 5 en VC7. Voor VC6 werd de oude VC5 library gebruikt en die is niet volledig. Evengoed merk je daar niet zo gauw iets van.

Waar je dus wel informatie vindt is op de SGI site; Matthew Austern heeft een hele mooie site gemaakt. Let even op dat de SGI site de SGI versie beschrijft met hashmaps en ropes, die komen pas in 2006 officieel in standaard C++. Hij heeft ook het beste boek hierover geschreven.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • Nexopheus
  • Registratie: Juni 2001
  • Laatst online: 28-01 13:50
Erg verhelderend moet ik zeggen.
Ik was er ook over tegengekomen in het online boek van Bruce Eckel. (Thinking in C++ Vol 1)

De SGI site heb ik inmiddels toegevoegd aan de favorieten, deze moet ik nog maar eens goed door lezen.

Wat niet kan is nog nooit gebeurd


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 15-09 22:39
Hij heeft beloofd in deel twee ook de iostreams te gaan doen ed

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.

Pagina: 1