2010-03-25 9 views
8

Ich habe C++ seit ungefähr einem Jahr programmiert, und wenn ich darüber nachschaue, sehe ich viele Verweise auf STL.Was ist der Sinn von STL?

Kann jemand mir bitte sagen, was es tut?

und die Vorteile und Nachteile davon?

auch was gibt es mir über die Borlands VCL oder MFC?

dank

+17

Die Chancen stehen hoch, dass Sie C seit einem Jahr programmieren und C++ entdecken. Im Ernst, C++ ohne STL ist verkrüppelt. – Thorsten79

+1

@ Thorsten79: Oder, wenn er wirklich nicht weiß, was die STL ist, kann er Container-Klassen, Algorithmen und Iteratoren als Teil der Standard-Bibliothek verwenden. Die eigentliche STL war eine Template-Bibliothek, die kurz vor C++ entwickelt wurde und einfach in die Standardbibliothek aufgenommen wurde. –

+0

@ Jonathan D, VCL und MFC sind meist GUI-Frameworks. STL ist eine Sammlung von Datenstrukturen. –

Antwort

23

Es ist die Standardbibliothek C++, die Sie alle Arten von sehr nützlichen Behältern, Strings, Algorithmen gibt, sie zu manipulieren mit usw.

Der Begriff ‚STL‘ IMHO veraltet ist, was verwendet, um die STL zu sein hat sich zu einem großer Teil der Standardbibliothek für C++.

Wenn Sie eine ernsthafte C++ - Entwicklung machen, müssen Sie mit dieser Bibliothek und vorzugsweise der boost Bibliothek vertraut sein. Wenn Sie es nicht bereits verwenden, arbeiten Sie wahrscheinlich auf der falschen Abstraktionsebene oder Sie beschränken sich auf eine kleine Teilmenge von C++.

+0

Was gibt es über Borland VCL oder Microsoft MFC? –

+1

@ Jonathan D: Portabilität, der Code, den Sie schreiben und auch Sie und Ihre Fähigkeiten. – Teddy

+11

Jonathan D: Die Fähigkeit, einen C++ Job zu bekommen. Wenn man behauptet, C++ zu kennen, ohne die Möglichkeit zu haben, die STL zu benutzen, wird man auf der ersten Stufe eines Vorstellungsgesprächs abgelehnt. –

0

Die STL Iterators hat. Sicher, Sammlungen und Zeug sind nützlich, aber die Macht-Iteratoren sind gigantisch und machen meiner Meinung nach den Rest blass im Vergleich.

1

"Vorteile und Nachteile" im Vergleich zu was? All diesen Code selbst schreiben? Das ist nicht offensichtlich? Es hat große Sammlungen und Werkzeuge, mit ihnen zu arbeiten

2

Es stellt allgemeine nützliche Werkzeuge für den Programmierer zur Verfügung! Iteratoren, Algorithmen usw. Warum das Rad neu erfinden?

0

Wikipedia hat einen guten Überblick: http://en.wikipedia.org/wiki/Standard_Template_Library

Die STL behebt einen großen Mangel an C++ - das Fehlen eines Standard-String-Typs. Dies hat unzählige Kopfschmerzen verursacht, da es Tausende von String-Implementierungen gegeben hat, die nicht gut zusammenarbeiten.

+0

Der Stringtyp in der Standardbibliothek war nie Teil der STL oder zumindest der von Stepanov und Lee entworfenen STL. –

+0

@Neil Sie haben Recht. Es ist Teil der C++ Standard Library (http://en.wikipedia.org/wiki/C%2B%2B_standard_library), nicht der STL (http://en.wikipedia.org/wiki/Standard_Template_Library). Aber dann denke ich, dass viele Leute "die STL" sagen, wenn sie "die C++ Standard Library" meinen. (Die Tatsache, dass sie viele sind, macht sie natürlich nicht richtig.) –

+0

Trotzdem finden Sie immer noch viele String-Bibliotheken in C++ - Code. Denken Sie daran, RogueWave, CString + jeder dachte, sie könnten es besser machen? Ganz zu schweigen davon, dass die Referenzzählung in std :: string in vielen Implementierungen nicht Thread-sicher war. –

0

Es steht für Standard-Template-Bibliothek

Es ist eine Reihe von Funktionen und Klasse, die es gibt Ihnen eine Menge Arbeit zu speichern.

Sie sind entworfen, um Vorlagen zu verwenden, wo Sie eine Funktion definieren, aber ohne zu definieren, welchen Datentyp es arbeiten wird.

zum Beispiel, Vektor mehr oder weniger können Sie dynamische Arrays haben. Wenn Sie eine Instanz davon erstellen, sagen Sie, für welchen Typ sie arbeiten soll. Dies kann sogar Ihr eigener Datentyp (Klasse) sein.

Es ist eine harte Sache, darüber nachzudenken, aber es ist sehr mächtig und kann Ihnen viel Zeit sparen.

Lesen Sie es jetzt auf! Du willst es bereuen.

3

Die STL ist die Standardvorlagenbibliothek. Wie bei jeder Bibliothek handelt es sich um eine Sammlung von Code, die Ihnen das Leben erleichtert, indem Sie gut getesteten, robusten Code zur Wiederverwendung bereitstellen.

  1. eine Sammlung benötigen (Karte, Liste, Vektor, usw.) sie sind in der STL
  2. Sie benötigen auf einer Sammlung zu betreiben (for_each, zu kopieren, zu transformieren, etc,) sie in der STL sind
  3. Müssen I/O tun, gibt es Klassen dafür.

Vorteile

1, Sie müssen Standardcontainer nicht neu implementieren (cus Sie es trotzdem falsch bekommen)

diese book von Nicolai M.Josuttis Lesen Sie mehr darüber zu erfahren, die STL, es ist das beste STL-Nachschlagewerk da draußen.

0

Es gibt Ihnen ein weiteres Akronym, um auf Cocktailpartys zu werfen.

Im Ernst, überprüfen Sie die Intro-Dokumentation z. mit der Wikipedia article on STL.

+3

Programmierer gehen nicht zu Cocktailpartys. Sie gehen zu LAN-Partys. –

4

STL steht für Standard Template Library. Dies war eine hauptsächlich von Stepanov und Lee entworfene Bibliothek, die dann als Teil der C++ Standard Library übernommen wurde. Der Begriff wird allmählich bedeutungslos, sondern deckt diese Teile der Standardbibliothek:

  • Behälter (Vektoren, Karten etc.)
  • Iteratoren
  • Algorithmen

Wenn Sie sich selbst ein C nennen ++ Programmierer sollten Sie mit all diesen Konzepten und der Implementierung der Standardbibliothek vertraut sein.

+0

Gerüchten zufolge steht STL eigentlich für "Stepanov und Lee!" (Gerücht * hatte * es jedenfalls ...) –