2

一部の C++ コードを C に変換する必要があり、STL コンテナーに関していくつかの問題があります。元の C++ コードでは、set コンテナーはset< pair<int, int>, sortMapped> mySet;、sortMapped がカスタム コンパレーターである場合のように使用され、キー値の代わりにマップされた値でエントリを "並べ替え" ます。もちろん、基本的な挿入、削除、反復子も元の C++ コードに含まれています。

だから私の問題は、誰かが私自身のコンパレータも書くことができるような「常にソートされた」コンテナに相当するCを知っていますか? ありがとうございました。

4

3 に答える 3

6

There is no such container within the C language. C does not have nice things like STL and so I think you will just have to write it yourself.

于 2012-09-21T17:07:53.453 に答える
2

いくつかの選択肢があります

  1. 二分木のコードを書きます。
  2. B ツリーのコードを記述します。
  3. ハッシュ テーブルのコードを記述します。
  4. C で書くのがより簡単な、問題に対する別の解決策を考えてください。

...そして、おそらく他のいくつかのデータ構造を見逃していましたが、問題のデータの性質と使用法に依存しています。

編集

上記のデータ構造をいつでも Google で検索して、コードの例を取得できます。

于 2012-09-21T17:23:35.527 に答える
0

独自のコンパレータも作成できる、そのような「常にソートされた」コンテナに相当するCを知っている人はいますか?

qsort()最も単純なのは、変更のたびに使用してソートされる配列です。独自のコンパレータをqsort()作成できます。

を使用bsearch()すると、 の機能を追加できますstd::set

ソートされた配列からアイテムを見つけるのは、非常に安価な操作です。しかし、挿入は非常に高価な操作です。したがって、これはすべての時間が重要なアプリケーションのソリューションではありません。

于 2018-06-20T14:35:28.550 に答える