• 締切済み

C言語で使うことの出来る配列のLIB

C言語から使うことの出来るSTLのコンテナクラスのようなものはありますでしょうか? 配列の追加、削除、検索、更新を高速で処理したいので(LIST構造)、汎用的に使えるLIBのようなものがあれば教えていただきたいです。

みんなの回答

  • koko_u
  • ベストアンサー率12% (14/116)
回答No.2

汎用性と高速性は両立しないと思うのですが。 C++ + STL でパフォーマンスに問題が出るほどシビアな環境なのでしょうか?

ritomo
質問者

お礼

>C++ + STL でパフォーマンスに問題が出るほどシビアな環境なのでしょうか? Cで作ることが前提になっています。 また、スピードは高性能なものが求められています。 >汎用性と高速性は両立しないと思うのですが。 ごもっともです。 ですので、使ってみて汎用なものでだめなら自前を考えます。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

GLibはどうでしょうか? http://www.gnome.gr.jp/docs/glib-1.2.x-refs/index.html ダウンロードするなら以下からどうぞ。 http://www.gtk.org/

参考URL:
http://www.gnome.gr.jp/docs/glib-1.2.x-refs/index.html
ritomo
質問者

お礼

回答ありがとうございます。 とりあえず使ってみます。

関連するQ&A

  • C言語で、配列の要素を削除したい

    構造体からなる配列において、 データを追加/削除したいのですが、 どうしたらいいのでしょうか? 学校の課題なのですが、問題から読み取る限り リスト構造じゃなくて配列でつくるみたいなのです。。 追加データ数は限られてるので、数はだいじょうぶと 思うのですが、データを消したあと その消した部分をどうやってつめればいいですか?? また、数字を追加/削除した後に数字のならびを ソートして昇順にそろえなければいけないのですが、 バブルソート法では遅いでしょうか? (それしか習ってないのですが) 何かもっと早くできる方法があれば教えていただきたいです。 どうかよろしくお願いします!

  • C言語

    今、独学でC言語を勉強しているんですが。 大きく、 条件処理、繰り返し処理、配列、関数、2次元配列、文字列、構造体、ファイル処理、乱数、検索、バブル・ソート、ポインタ まではやったんですが(参考書で勉強)。 その次になにを勉強したらよく分からないので、 何を勉強するべきか教えてください。 将来的にこれっと言った作りたいものは決めていません。 お願いします。

  • JAVA 配列のリストの作り方

    ArrayList<String[]> stl = new ArrayList<String[]>(); このように、配列をリスト構造で作ることはできませんか?

  • VBScript で動的配列

    VBScript で動的配列 VB ではなく、VBScript で動的配列を実装したクラスはないでしょうか (自分で実装するのではなく、CreateObject() とかですぐにインスタンス化できるもの)。 私は C++ の STL で vector/list/map を多用していたのですが、VBScript で vector/list の様に使えるクラスを探しています (map は VBScript の Dictionary でだいたい似たようなことができる)。 条件としては、 (1) メモリの許す限り、要素をパカパカ追加していくことができる。 (2) 要素をすべて列挙できる。 (3) 要素を追加した順に列挙できる。 (4) 追加した順に要素を削除していくことができる (FIFO)。 (5) 追加した順とは逆順に要素を削除していくことができる (FILO)。 (6) 整数インデックスでランダムアクセスできる。 の様なものを探しています。(3)~(6) はオプションの条件なのですべて満たしている必要はありません。 「ReDim や Dictionary を使って自分で実装する必要がある」という意見の方は簡潔にそう記してください。実装方法は必要はありません。 なるべく、独自のクラスを定義することなく、そのまま使えるものがいいです。 ご存じの方、いましたら、よろしくお願いします。

  • C言語でゲーム

    今、独学でC言語を勉強しているんですが。 大きく、 条件処理、繰り返し処理、配列、関数、2次元配列、文字列、構造体、ファイル処理、乱数、検索、バブル・ソート、ポインタ を勉強したんですが。 もしも、ゲームを作るとしたら・・ もし、ボンバーマンみたいなのを作るとなるとどういう勉強をすればいいんでしょうか? もうひとつはHALOみたいなxbox関係などはどの様な勉強をすればいいんでしょうか? 質問が多いですが、よろしくお願いします。

  • c# でList<T>と似たものを作りたい

    c#初心者です。 c#のList<T>などのコレクションのように動的かつ高速に配列の容量を変更できるクラスを作りたいのですが、Listの構造すら分からないわ、普通の配列で色々やってみて上手くいかないわで困っています。 要はListやDictionaryがもつAddメソッドの基本的な内容が分かれば良いのですが、どなたか教えていただけないでしょうか?

  • 動的配列の賢い使い方

    動的配列について質問です。 構造体を動的配列で今ボタンを押すたびに値を追加しています。 i = i+1 Redim preserve a(i) as ユーザ定義 ただこの方法だと追加するだけならよいのですが、 削除の時に問題があります。 例えば、配列が5つあるとします。 削除のボタンをクリックし2番目の配列を削除したとします。次に追加ボタンをクリックすると6番目に追加します。 これですと、2番目の値がないのに(5つしかないのに)6つ分のメモリを確保することになると思います。 上手はメモリ確保方法はないでしょうか? 構造体のデータは、 ・index ・文字列 ・数値 をそれぞれ持っており、indexは一応追加するごとに増えていくようになっています。 うまく説明できませんが、よろしくお願い致します。

  • Processing言語 listの配列数

    Processing言語を学習中です。 いくつか質問がありがありますので、箇条書きにさせて頂きます。 (1)ポートの検索 マイコンとUSB経由で接続しシリアル通信をさせているのですが Processingのプログラム上で自動的にUSBが刺さっているポートを 検出する方法はありますか? (2)「list」の配列数 Processing言語の「list」をPrintlnで出力すると [0] COM1 [1] COM2 [2] COM7 が出力されますが、この配列数(0~2・・・)を求める方法ありますか? http://www.technotype.net/processing/reference/libraries/serial/Serial_list_.html (3)テキスト(txt)に追加で書き込む 「createReader」または「createWriter」で選択したテキストは 一度プログラムを終了させ、再度起動させると選択したテキスト に上書きで書込み、前回のデータが消えてしまう。 「createReader」または「createWriter」で選択したデータに 追加で書き込む方法はありませんか? 御返答よろしくお願い致します。

  • 私の場合、C++とJavaのどちらの言語でクラス取るべき?

    今度、データ構造のクラスを取ります。 でもその言語がC++とJavaで選べます。 私自身はBASIC, C, Fortran, Assembly, C++と習ってきました。 C++の初級は余裕だったのですが(Cの知識が結構応用できた)、 中級でのclassの概念(base, derivedなど)は 今一つ理解できてないと思います(グレードはBでした)。 例文があれば、いろんなところから貼り合わせ、なんとか動くようには出来るレベルです(^^ゞ 教授は「大丈夫、C++を理解していればJavaは出来る」と言いますし、 ここのOKWebの過去ログにもそんな記述があるのですが、 未知の言語(Java)で初級コースならまだしも データ構造(配列やらリストやら)を扱うっていうのは厳しいような…うーん…。 …と言いつつもC++でも自信ないし…うーん…。 Javaは人気があるのは知っていますし、新しい言語に興味もあるのですけど…うーん…。 最近、初級コースはJavaに切り替わったそうです… でも折角C++で必修科目を埋めたのにJavaで取り直すのはちょっと…うーん…。 こんな私はどちらの言語でデータ構造のクラスを取ればよいでしょうか? 両方の言語をご存知の方、アドヴァイスをください。

  • C言語 構造体配列について

    6人分の小テストの点数を記録し,平均値などを計算するプログラムを作成している. 以下の手順と条件に従ってプログラムを作成. 手順 (1) 氏名(name[100], char 型) と点数( score , int 型) をメンバにもつ構造体「struct_TEST」を(main 関数の外で)定義. (2) struct _TEST 型構造体配列 element[6] を定義. (3) キーボードから氏名(ローマ字でよい)と点数を入力する処理を6 回繰り返す. (4) 平均点を計算して画面表示. (5) 最高点を出した人の名前と点数を画面表示. (6) 平均点に満たない人の名前と点数を画面表示. 条件 (3)~(6)の処理には以下に示す関数を利用する. (3) ・・・ 氏名と点数を入力する処理をn 回繰り返す関数 void input_score( struct _TEST *a, int n ) (4) ・・・ n 個の構造体配列に対して平均を計算し,平均点を返す関数 double calc_ave( struct _TEST *a, int n ) (5) ・・・ n 個の構造体配列に対して最高点を算出し,そのユーザの配列番号を返す関数 int calc_max( struct _TEST *a, int n ) (6) ・・・ n 個の構造体配列に対して平均点に満たない人の名前と点数を画面表示する関数 void show_under_ave( struct _TEST *a, int n ) C言語の構造体が良く分かっていません。 こういった条件が多いと考えづらく分からなくなります。 考えても分かっていないので困っています。 誰かすみませんが解答を教えて下さい。

専門家に質問してみよう