1. ホーム
  2. c++

[解決済み] STL」と「C++ Standard Library」の違いは?

2022-03-19 17:37:20

質問

誰かが持ってきた この記事 という主張があることに気づきました。 (言い換えています) STLという用語は、SGI STLから引用された部分ではなく、C++標準ライブラリ全体を指すものとして誤用されています。

(...)STL(SGIで設計された)を使っている人はまだほとんどいないにもかかわらず、quot;STL"を指しています。

C++標準ライブラリの一部はSTLの一部をベースにしており、多くの人々(何人かの著者や悪名高くエラーだらけのcplusplus.comを含む)が今でも"STL"と呼んでいるのはこの部分なのです。しかし、これは不正確です。実際、C++標準は決して"STL"に言及しておらず、両者の間には内容的な相違があります。

(...) "STL" は、SGI STL に基づいている stdlib のビットを指すために使われることはほとんどありません。みんな標準ライブラリ全体のことだと思っているんです。履歴書にはそう書かれています。そしてそれは誤解を招きます。

私はC++の歴史についてほとんど知らないので、記事の正しさを判断することはできません。STLという言葉を使うのは控えた方がいいのでしょうか?それとも、これは孤立した意見なのでしょうか?

どのように解決するのですか?

STL" "です。 は、Alexander Stepanovによって書かれました。 C++が標準化されるずっと前の時代です。C++は80年代まで存在しましたが、現在私たちが".C++と呼んでいるものは、この時代のものです。 C++ "は、ISO/IEC 14882:2014(およびISO/IEC 14882:2011などの旧バージョン)で標準化されている言語です。

STLはすでにC++のライブラリとして広く利用されており、プログラマはコンテナ、イテレータ、アルゴリズムにアクセスできるようになっていました。標準化が行われたとき、言語委員会が設計したのは の部分 C++標準ライブラリ(言語規格の一部)は、以下のように構成されています。 非常に は、STLとほぼ同じです。

長年にわたり、著名な書籍の著者やさまざまなウェブサイトを含む多くの人々が、C++標準ライブラリのことを"STL"と呼び続けました。両者は別物であり、いくつかの違いがあるという事実にもかかわらず、です。これらの違いは、様々な機能を含み、いくつかのクラスを大幅に変更する今度の新しいC++標準ではさらに顕著になる。

Microsoft Visual StudioやGCCがC++ Standard Libraryの実装を同梱しているように、オリジナルのSTLは現在、しばしば "an implementation of C++ Standard Template Library" (実際の歴史とは逆行している!)と呼ばれています。しかし、quot;標準テンプレートライブラリとquot;標準ライブラリは同じものではありません。

現在の標準ライブラリの全部または一部をSTLと呼ぶべきかどうか、そして、どう呼ぶかが重要かどうかという争いです。

STL"の場合。

C++がISO標準言語であることを誰もが知っているように、STLが標準ライブラリであることを誰もが知っている、という考え方があります。

また、次のように考えている人も含まれます。 どうでもいい というのも、すべての関係者が話の内容を理解していればよいからです。

この用語は、C++のテンプレートという機能を多用しているため、その性質上、より一般的な用語になっています。

C++標準ライブラリ(stdlib)の場合。

しかし、これは混乱を招くとする考え方もあり、私もその意見に賛同しています。初めてC++を学習する人は しない この区別がつかないと、ちょっとした言葉の違いに気づかないかもしれません。

その記事の著者は、C++の標準ライブラリ全体が、そのようなものだと信じている人々に何度も遭遇しました。 STLに含まれない機能も含まれます。それに対して、STLの支持者の多くは、STLの意味を正確に理解しており、誰もがそれを理解しているわけではないことを信じようとはしません。明らかに、この用語の使い方は一様ではない。

また、STLライクなライブラリの中には、実はC++ Standard Libraryではなく、オリジナルのSTLを実装したものも存在する。最近までは STLPort がその一つでした(そこでも。 混乱 が多いですね(笑)。

さらに、C++ 標準にはどこにも "STL" という文言はなく、一部の人々は習慣的に "the STL is というフレーズを使用しています。 含まれる は、C++標準ライブラリに含まれていますが、これは明らかに間違っています。

このまま言葉の使い方を広めても、誤解が永遠に続くだけだと私は思っています。残念なことに、たとえ良い方向に向かうはずのことでも、変えようとすることは全く逆効果なのかもしれません。いつまでもダブルミーニングから抜け出せないでいるのかもしれない。

結論

この記事は少し偏った内容になってしまいましたが、ご了承ください。リンク先の記事は私が書いたものです :) とにかく、このバトルをもう少しうまく説明するのに役立つと思います。

2011年04月13日更新

以下は パーフェクト C++標準ライブラリ全体を指すために"the STL"を使用している人のことです。多くの人が「誰もこんなことしない」と盲目的に誓っているのが不可解で、ほとんど毎日のように目にすることができるのに。