標準テンプレートライブラリチュートリアル-パート1:概要と動機

いくつかのパートの最初の部分は、標準テンプレートライブラリ(STL)をカバーしています。

開発者として、特にC ++のような非常に成熟した安定したSW言語では、コアライブラリの強力な基盤を取得することが重要です。C ++では、これは標準ライブラリであり、C++98からC++23までのメジャーリリースで継続的インテグレーションが行われています[1]。

SLは何を提供しますか?

図1に示すように、C++SLのコアはSTLです。いくつかのブログで詳細に説明するように、STLは、データ収集を管理するための効率的なアルゴリズムソリューションを提供する汎用ライブラリです。

図1C++標準ライブラリ(SL)は、ほとんどがSTLで構成されています。作者が作成したイラスト。

STLの外部にある他のコンポーネントはSLの一部であることに注意してください。要約すると、SLは[2]も提供します。

  • 文字列クラス
  • 数値クラス
  • ストリームI/Oクラスの標準バージョン
  • 基本的なメモリ割り当て
  • 例外クラス
  • 実行時型情報

次に、STLに焦点を当てましょう。

なぜC++SLを使用するのですか?

結論として、C ++の基本的な理解(特に効果的な現代のコードベース)は、そのSLとさまざまなヘッダーファイル、したがって部分的に提供されるインターフェイスに関する知識にあります。

C ++標準ライブラリを使用する理由:

  1. コードの再利用。車輪の再発明をする必要はありません。
  2. 効率的—より高速で、より少ないリソースを使用:最新のC ++コンパイラは通常、C++標準ライブラリコード用に最適化するように調整されています。
  3. 正確でバグが少ない。
  4. 簡潔で読みやすいコード。制御フローの減少。
  5. 標準化、可用性の保証。
  6. ライブラリを作成するためのロールモデル。
  7. データ構造とアルゴリズムに関する十分な知識。

STLの概要

図2STLのコンポーネント。出典:[3]

データ構造とアルゴリズムは、上記のように提供されます(項目7を参照)。これらはSTLの多くを構成します。まず、STLのコンポーネントを見てみましょう。

図3Aは、すべてのデータサイエンスの典型的なシナリオです。作者が作成したイラスト。

メモリ管理に関する過去のブログシリーズ([4]および[5]を参照)で取り上げたように、プログラム(たとえば、インポート、制御フロー、i / o)があり、外部リソース(たとえば、データ)があります。 )。構造なしでデータがメモリに読み込まれる場合、データポイントをコンテナ(つまり、データ構造)に編成する必要があります。

たとえば、単純なケースで2つのデータ型があると仮定します。したがって、関連付けかグループ化かを問わず、各データポイントのタイプを知りたいと思います(図4)。

図4.左側にタイプ別のデータポイント(例:名目上のラベル)、右側にグループの関連付け(例:クラスター)。作者はイラストを作成しました。

図4を見て、次のことを考えてください。どちらの場合でも、理想的なデータ構造はどのように機能しますか?もっと情報が必要ですか?

したがって、STLによって提供される主要なコンポーネントの1つであるコンテナ(つまり、データ構造)についてのみヒントを示しました。アルゴリズムはどうですか?したがって、図3を振り返ると、左側(つまり、プログラム自体)に戻ります。アルゴリズムを使用してデータセットを操作したいと思います。STLのもう1つの主要な部分があります。

なぜSTLなのか?

さて、コンテナとアルゴリズムの必要性と実用的な重要性を確立しました。MコンテナがNアルゴリズムで実行されている場合を観察してみましょう。図5に示すように、これにはM*N実行コストがかかります。

M5N個のアルゴリズムのコンテナのコストM*N個の異なるスクリプトを実装する必要があります。作者が作成したイラスト。

STLは、イテレータを介して2つの高度にペアリングされたコンポーネント間のインターフェイスを一般化し、2つの高度にペアリングされたコンポーネントをブリッジします。このシリーズのパート4について詳しく説明するので、さまざまなコードスニペットIteratorsを実装するだけでよい方法を提供しN+Mます(図6)。

図6N個のアルゴリズムのMコンテナには、M+N個の異なるスクリプトを実装する必要があります。作者が作成したイラスト。

通常、AアルゴリズムとCコンテナをサポートする場合は、A × C実装が必要になります。Aコンテナごとにアルゴリズムを実装する必要がありCます。

  • これに対する1つの解決策は、ポリモーフィズムを使用することです。ただし、効率が低下します。
  • STLはイテレータの問題を解決します。コンテナは、実装されたアルゴリズムが機能するためのイテレータを提供します。その結果、STLはアルゴリズムとコンテナーA + Cの実装のみを提供する必要があります。AC

要約すれば

  • STLの主なコンポーネントは、アルゴリズムとコンテナーです。
  • 通常、AアルゴリズムとC コンテナをサポートする場合は、A × C実装が必要になります。Aコンテナごとにアルゴリズムを実装する必要がありCます。
  • STLを使用する理由はたくさんあるので、C++でできる限り使用してください。
  • これにより、すでに発明されたコードを再利用できます。車輪の再発明をする必要はありません!
  • これは最適化されており、アルゴリズムやデータ構造の実装よりもおそらく効率的です。
  • (最初に)作成したコードよりもバグが少ない可能性があります。
  • STLは標準化されており、C++標準ライブラリで使用できることが保証されています。
  • 繰り返しになりますが、これを使用すると、データ構造とアルゴリズムに関する十分な知識が得られます。

次は何ですか?

次に、STLコンテナーについて詳しく説明します。次に、アルゴリズムについて説明し、その後にイテレータについて説明します。また、ファンクターをカバーする最後の作品(図2ではありますが、範囲外です…今のところ)。

元の記事のソース:https ://betterprogramming.pub/a-standard-template-library-stl-tutorial-series-9379bcbcd2fb

#STL #programming #cpp #cpluplus 

What is GEEK

Buddha Community

標準テンプレートライブラリチュートリアル-パート1:概要と動機

標準テンプレートライブラリチュートリアル-パート1:概要と動機

いくつかのパートの最初の部分は、標準テンプレートライブラリ(STL)をカバーしています。

開発者として、特にC ++のような非常に成熟した安定したSW言語では、コアライブラリの強力な基盤を取得することが重要です。C ++では、これは標準ライブラリであり、C++98からC++23までのメジャーリリースで継続的インテグレーションが行われています[1]。

SLは何を提供しますか?

図1に示すように、C++SLのコアはSTLです。いくつかのブログで詳細に説明するように、STLは、データ収集を管理するための効率的なアルゴリズムソリューションを提供する汎用ライブラリです。

図1C++標準ライブラリ(SL)は、ほとんどがSTLで構成されています。作者が作成したイラスト。

STLの外部にある他のコンポーネントはSLの一部であることに注意してください。要約すると、SLは[2]も提供します。

  • 文字列クラス
  • 数値クラス
  • ストリームI/Oクラスの標準バージョン
  • 基本的なメモリ割り当て
  • 例外クラス
  • 実行時型情報

次に、STLに焦点を当てましょう。

なぜC++SLを使用するのですか?

結論として、C ++の基本的な理解(特に効果的な現代のコードベース)は、そのSLとさまざまなヘッダーファイル、したがって部分的に提供されるインターフェイスに関する知識にあります。

C ++標準ライブラリを使用する理由:

  1. コードの再利用。車輪の再発明をする必要はありません。
  2. 効率的—より高速で、より少ないリソースを使用:最新のC ++コンパイラは通常、C++標準ライブラリコード用に最適化するように調整されています。
  3. 正確でバグが少ない。
  4. 簡潔で読みやすいコード。制御フローの減少。
  5. 標準化、可用性の保証。
  6. ライブラリを作成するためのロールモデル。
  7. データ構造とアルゴリズムに関する十分な知識。

STLの概要

図2STLのコンポーネント。出典:[3]

データ構造とアルゴリズムは、上記のように提供されます(項目7を参照)。これらはSTLの多くを構成します。まず、STLのコンポーネントを見てみましょう。

図3Aは、すべてのデータサイエンスの典型的なシナリオです。作者が作成したイラスト。

メモリ管理に関する過去のブログシリーズ([4]および[5]を参照)で取り上げたように、プログラム(たとえば、インポート、制御フロー、i / o)があり、外部リソース(たとえば、データ)があります。 )。構造なしでデータがメモリに読み込まれる場合、データポイントをコンテナ(つまり、データ構造)に編成する必要があります。

たとえば、単純なケースで2つのデータ型があると仮定します。したがって、関連付けかグループ化かを問わず、各データポイントのタイプを知りたいと思います(図4)。

図4.左側にタイプ別のデータポイント(例:名目上のラベル)、右側にグループの関連付け(例:クラスター)。作者はイラストを作成しました。

図4を見て、次のことを考えてください。どちらの場合でも、理想的なデータ構造はどのように機能しますか?もっと情報が必要ですか?

したがって、STLによって提供される主要なコンポーネントの1つであるコンテナ(つまり、データ構造)についてのみヒントを示しました。アルゴリズムはどうですか?したがって、図3を振り返ると、左側(つまり、プログラム自体)に戻ります。アルゴリズムを使用してデータセットを操作したいと思います。STLのもう1つの主要な部分があります。

なぜSTLなのか?

さて、コンテナとアルゴリズムの必要性と実用的な重要性を確立しました。MコンテナがNアルゴリズムで実行されている場合を観察してみましょう。図5に示すように、これにはM*N実行コストがかかります。

M5N個のアルゴリズムのコンテナのコストM*N個の異なるスクリプトを実装する必要があります。作者が作成したイラスト。

STLは、イテレータを介して2つの高度にペアリングされたコンポーネント間のインターフェイスを一般化し、2つの高度にペアリングされたコンポーネントをブリッジします。このシリーズのパート4について詳しく説明するので、さまざまなコードスニペットIteratorsを実装するだけでよい方法を提供しN+Mます(図6)。

図6N個のアルゴリズムのMコンテナには、M+N個の異なるスクリプトを実装する必要があります。作者が作成したイラスト。

通常、AアルゴリズムとCコンテナをサポートする場合は、A × C実装が必要になります。Aコンテナごとにアルゴリズムを実装する必要がありCます。

  • これに対する1つの解決策は、ポリモーフィズムを使用することです。ただし、効率が低下します。
  • STLはイテレータの問題を解決します。コンテナは、実装されたアルゴリズムが機能するためのイテレータを提供します。その結果、STLはアルゴリズムとコンテナーA + Cの実装のみを提供する必要があります。AC

要約すれば

  • STLの主なコンポーネントは、アルゴリズムとコンテナーです。
  • 通常、AアルゴリズムとC コンテナをサポートする場合は、A × C実装が必要になります。Aコンテナごとにアルゴリズムを実装する必要がありCます。
  • STLを使用する理由はたくさんあるので、C++でできる限り使用してください。
  • これにより、すでに発明されたコードを再利用できます。車輪の再発明をする必要はありません!
  • これは最適化されており、アルゴリズムやデータ構造の実装よりもおそらく効率的です。
  • (最初に)作成したコードよりもバグが少ない可能性があります。
  • STLは標準化されており、C++標準ライブラリで使用できることが保証されています。
  • 繰り返しになりますが、これを使用すると、データ構造とアルゴリズムに関する十分な知識が得られます。

次は何ですか?

次に、STLコンテナーについて詳しく説明します。次に、アルゴリズムについて説明し、その後にイテレータについて説明します。また、ファンクターをカバーする最後の作品(図2ではありますが、範囲外です…今のところ)。

元の記事のソース:https ://betterprogramming.pub/a-standard-template-library-stl-tutorial-series-9379bcbcd2fb

#STL #programming #cpp #cpluplus 

渚 あ すか

渚 あ すか

1601505060

NGINX 使い方、設定ファイル、locationの書き方【やっすんのエンジニアTips】パート1

NGINX 使い方、設定ファイル、locationの書き方【やっすんのエンジニアTips】パート1

NGINXの名前の由来、設定ファイル、locationの書き方を解説!

■ 目次

  • 00:00 導入
  • 00:14 今日のテーマ ~ 名前の由来、設定ファイルの基礎、locationの書き方 ~
  • 00:26 Nginxの名前の由来
  • 01:37 ディレクティブについて ~ 設定ファイルの基礎 ~
  • 02:26 設定ファイルの外観
  • 03:50 mainディレクティブ
  • 04:09 httpディレクティブ
  • 04:32 serverディレクティブ
  • 05:01 locationディレクティブ
  • 05:29 locationディレクティブの書き方
  • 10:12 locationの書き方 具体例

#nginx