私は、クイックソート、マージソート、バイナリ検索などのいくつかの標準アルゴリズムを使用するプロジェクトに取り組んでいます。使用する前にそれらすべてを実装することは、非常に面倒で時間がかかります。
それで、GCC-4.3.2ですでに利用可能な標準アルゴリズムのリストを誰かに教えてもらえますか?そうすれば、プロジェクトで直接それらを使用できます。
疑問がある場合はコメントしてください。
ありがとう !
あなたの質問に対する最良の答えが何であるかは不明です。使用しているオペレーティング システムによって異なる場合があります。
C 標準ライブラリは、さまざまなアルゴリズムを実装したり、オペレーティング システム機能への (限定的な) アクセスを提供したりする関数を多数提供します。特に、標準qsort()
関数は配列をソートし、bsearch()
関数は配列を検索します。どちらの場合も、C 標準でその機能が指定されています。彼らがどのようにそれを行うかについては何も言いません。qsort()
バブル ソートを実行bsearch()
する と線形検索を実行する を提供する実装は合法です。
C 標準ライブラリの決定的なリファレンスは、ISO C 標準です。この標準には、1990 年、1999 年、2011 年にリリースされたいくつかの連続したバージョンがあります。1999 年標準の優れたドラフトはN1256です。C11 標準の適切なドラフトはN1570です。gcc を使用している場合、実装はおそらく C99 のほぼすべてを実装しています (使用できますgcc -std=c99
)。C11 準拠は進行中の作業です。
ほとんどの実装では、C 標準で必要とされない追加のライブラリ関数が提供されます。たとえば、POSIX では多数の追加機能が指定されています。
gcc 4.3.2 を使用しているという事実は、実行時ライブラリで何が利用できるかを実際に示しているわけではありません。AC の実装は、コンパイラとランタイム ライブラリで構成されます。gcc は単なるコンパイラです。OS によっては、さまざまなランタイム ライブラリで使用できます。Linux (またはお好みで GNU/Linux) システムの場合、ランタイム ライブラリは通常 (常に?) GNU libcです(そのリンクについては Jim Balter に感謝します)。他のシステムは、他のランタイム ライブラリを使用している可能性があります。システムが使用しているライブラリを見つけて、そのドキュメントを調べる必要があります。
C ライブラリは汎用アルゴリズムをあまり提供していないことに注意してください。その理由の 1 つは、そのようなアルゴリズムを純粋な C できれいに表現するのが難しいためです。たとえば、 と を見るqsort()
とbsearch()
、それらがvoid*
ポインターを使用し、型付きオブジェクトではなく、メモリのチャンク。標準ライブラリが多数のデータ型とアルゴリズムを提供する C++ を検討することを検討してください。C++ のテンプレート機能を使用しているため、より型安全です。