STL verwenden oder nicht?



  • Ist die STL so zukunftssicher, daß sie in "allen" Zeiten
    bestandteil von C++ bleiben wird oder muß man damit rechnen,
    daß C++ Programme ohne STL eines Tages zukunftssicherer
    sein wird als solche mit STL ?
    Meines Wissens ist die STL ja erst später zu C++ hinzugekommen
    und daher wohl nicht ganz so untrennbar mit C++ verbunden wie
    etwa die stdlib mit C, oder ?



  • Naja, wenn man nach/für einen Standard schreibt, dann benennt man ja diesen Standard. (Z.B.: Dieser Quelltext entspricht dem Standard C99.)

    Wenn du also für den aktuellen C++ Standard schreibst, kannst du eben davon ausgehen, dass die STL damit zugehört.

    Und falls sie doch mal irgendwann wieder rausfliegen sollte, dann wird bestimmt auch noch mehr verändert, so dass man eh nachbessern muss.
    Aber dadurch, dass sich die STL auch nachrüsten lässt (STL-Port) brauchst du eigentlich keine Angst dahingehend haben.)



  • naja du kannst auch c++ ohne stl programmieren, aber das kostet zeit und nerve. und erlich gesagt hab die leute, die die stl gemacht haben sicher von der materie ahnung. wenn dir das konzept nicht passt, dann kannst du was anderes machen, aber meiner meiunug nach kann man die stl getrost verwenden. wenn du dann irgend wann etwas anders verwenden willst, dann könnte man das recht einfach machen, wenn man den code eben dementsprechen gut strukturiert hat, dass das dann flott von der hand geht.

    .MamboKurt



  • B. Dynbreth schrieb:

    Ist die STL so zukunftssicher, daß sie in "allen" Zeiten
    bestandteil von C++ bleiben wird oder muß man damit rechnen,
    daß C++ Programme ohne STL eines Tages zukunftssicherer
    sein wird als solche mit STL ?
    Meines Wissens ist die STL ja erst später zu C++ hinzugekommen
    und daher wohl nicht ganz so untrennbar mit C++ verbunden wie
    etwa die stdlib mit C, oder ?

    *lol*



  • Danke. Es geht weniger darum, daß die STL nicht gut genug ist
    (natürlich ist STL besser als das, was ich selbst programmieren
    könnte...) sondern mehr um den Aspekt, daß der Code in 5 oder 10 Jahren
    nicht völlig umgekrempelt werden soll, wenn neue Compiler vielleicht kein
    STL mehr haben. Aber wenn es dann Ports geben wird, ist das ja auch OK.
    Wieviel Software (geschätzt) verwendet eigentlich STL und wieviel kommt
    ohne aus ?



  • B. Dynbreth schrieb:

    Ist die STL so zukunftssicher, daß sie in "allen" Zeiten
    bestandteil von C++ bleiben wird oder muß man damit rechnen,
    daß C++ Programme ohne STL eines Tages zukunftssicherer
    sein wird als solche mit STL ?
    Meines Wissens ist die STL ja erst später zu C++ hinzugekommen
    und daher wohl nicht ganz so untrennbar mit C++ verbunden wie
    etwa die stdlib mit C, oder ?

    Die C++ Standard Library (vor der Standardisierung STL genannt) ist genau so lange Teil von C++ wie es einen C++-Standard gibt, sprich es gab nie ein standardisiertes C++ ohne.

    Keiner weiss was in allen Zeiten sein wird, vielleicht entscheidet man sich irgendwann 'for' oder 'while' abzuschaffen, in einer weit entfernten Zukunft. 🙄

    Generell gibt es keine Planungen die Library aus dem Standard zu entfernen, alle aktuellen Arbeiten/Überlegungen laufen nur in Richtung der Begradigung einiger Probleme (z.B. die Spezialisierung std::vector<bool>) oder Erweiterung um zusätzlicher Komponenten. Daher würde ich sie als festen, integralen Bestandteil der Sprache betrachten und genauso benutzen.

    Es mag Situationen geben in denen man z.B. mit handgeschnitzten Behältern besser bedient ist, aber eine Zukunftssicherheit ist in dem Fall eher kein Argument.



  • Bla bla bla! 😡 Was sind das denn hier für schwammige Antworten? 👎

    Hutzli ist der einzige der Peilung hat. Die STL gab es schon weit vor dem ISO-Standard und wurde bei HP entwickelt. Bjarne Stroustrup ist dann an die orig. Entwickler herangetreten um die STL für den ersten C++ Standard zu gewinnen. Hat auch funktioniert, die STL ist seit dem ersten Tag an im offiziellen C++ Standard enthalten und hat schon weit vorher existiert.

    KEINER wird die STL raus schmeissen, auch in 10 Jahren nicht! Warum auch? Wenn selbst die C-Library aus Rückwärtskompatibilitätsgründen in C++ enthalten ist, warum sollten man C++ zum eigenen Standard inkompatibel machen wollen? 😮 Ein bisschen Grips sollte man schon haben.

    Weiterhin gibt es Namespaces, die gerade verhindern sollen, das es Probleme gibt, wenn doch mal z.B. ein komplett neuer vector kommen sollte. Dann wird es halt einen neuen Namespace für den nächsten ISO-Standard geben und der alten std-Namespace kann weiter offiziell existieren.



  • Na dann ist ja alles klar.



  • Artchi schrieb:

    Bla bla bla! 😡 Was sind das denn hier für schwammige Antworten? 👎

    Bla bla bla! 😡 Was soll denn dieses pampige geposte? 👎

    Artchi schrieb:

    KEINER wird die STL raus schmeissen, auch in 10 Jahren nicht! Warum auch? Wenn selbst die C-Library aus Rückwärtskompatibilitätsgründen in C++ enthalten ist, warum sollten man C++ zum eigenen Standard inkompatibel machen wollen? 😮 Ein bisschen Grips sollte man schon haben.

    Natürlich *kann* es sein, dass ein zukünftiger Standard die STL nicht mehr vorsieht. Sehr wahrscheinlich ist es aber nicht, das stimmt wohl. Die vorige Antwort von SeppSchrot war also nicht schwammig, sondern allenfalls vorsichtig, da er scheinbar keine so tolle Kristallkugel hat wie du.



  • Es gibt bereits als "deprecated" gekennzeichnete Klassen. Zum Beispiel die in strstream. Diese werden wahrscheinlich bald wegfallen. Statt dessen soll man sstream einbinden und die Klassen daraus verwenden.
    Wenn aber ein neuerer Compiler ältere STL Header nicht dabei hat, kann man Sie einfach vom älteren übernehmen und ins include-Verzeichnis des neuen kopieren, denn syntaktisch standardkonforme Konstruktionen wird man wohl kaum abschaffen.



  • nillable schrieb:

    Es gibt bereits als "deprecated" gekennzeichnete Klassen. Zum Beispiel die in strstream. Diese werden wahrscheinlich bald wegfallen. Statt dessen soll man sstream einbinden und die Klassen daraus verwenden.
    Wenn aber ein neuerer Compiler ältere STL Header nicht dabei hat, kann man Sie einfach vom älteren übernehmen und ins include-Verzeichnis des neuen kopieren, denn syntaktisch standardkonforme Konstruktionen wird man wohl kaum abschaffen.

    Das stimmt wohl, man sollte allerdings fairerweise dazu sagen, das diese bereits seit bestehen des Standards (also seit 1998) "deprecated" sind und überhaupt nur aufgenommen wurden um den damals bestehenden Projekten eine leichte Migration zum Standard zu ermöglichen. Ein oberflächlicher Vergleich der Deprecates der ersten und der zweiten Auflage des Standards (von 2003) hat keine Auffälligkeiten gebracht und vor Vollendung von C++0x ist eh nicht mit echten Neuerungen zu rechnen. Aber wer sich jetzt an die Empfehlungen hält und nicht zu gewagte Dinge macht, sollte so schnell nicht viel Arbeit durch Änderungen am Standard zu erwarten haben.

    Das nur, damit nicht der Eindruck entsteht es hätte sich seit Bestehen des Standards wirklich viel verändert. 🤡


Anmelden zum Antworten