STLソースコード分析(1)概要

1.6つの主要コンポーネント

コンテナ:データの格納には、vector、list、deque、set、mapなどのさまざまなデータ構造が使用されます。実装の観点からは、STLコンテナはクラステンプレートです。

アルゴリズム:実装の観点から、ソート、検索、コピー、消去などのさまざまな一般的に使用されるアルゴリズムであるSTLアルゴリズムは関数テンプレートです。

イテレータ:コンテナとアルゴリズムの間の接着剤として機能します。これはいわゆる「ジェネリックポインタ」です。5つのタイプとその他の派生した変更があります。実装の観点から、イテレータは一種の演算子です*、 Operator->、Operator ++、Operator--、およびその他のポインター関連の操作は、オーバーロードされたクラステンプレートです。すべてのSTLコンテナーには、独自のイテレーターが付属しています。コンテナー設計者だけが要素をトラバースする方法を知っており、ネイティブポインターもイテレーターです。

ファンクター:関数のように動作し、アルゴリズムの特定のポリシーとして使用できます。実装の観点から、ファンクターは演算子()をオーバーロードするクラスまたはクラステンプレートです。一般的な関数ポインタは、狭義のファンクタと見なすことができます。

アダプタ(アダプタ):コンテナ、ファンクタ、またはイテレータのインターフェイスを変更するために使用されるもの。たとえば、STLによって提供されるキューとスタックは、コンテナのように見えますが、下部が完全にあるため、コンテナアダプタと見なすことができます。 dequeredであり、すべての操作は基礎となるdequeによって提供されます。関数インターフェースを変更するものを関数アダプターと呼び、コンテナーインターフェースを変更するものをコンテナーアダプターと呼び、イテレーターインターフェースを変更するものをイテレーターアダプターと呼びます。アダプターの実現技術を一言でまとめるのは難しく、ひ​​とつひとつ分析する必要があります。

アロケータ:スペースの構成と管理を担当します。実装の観点から、アロケータは動的なスペース構成、スペース管理、およびスペース解放を実装するクラステンプレートです。

ここに画像の説明を挿入

1.1。主な機能
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/thefist11cc/article/details/123588883