CでもSTLっぽいの作る
libdatastructにないものは自分で作るしかないなーということで作った。名前センスなさすぎわろた
テストにはnanotap.hとかPerlとか使ってる。
今のところlistしかない。
STLのインターフェースに合わせた関数などを定義してある。
普通のCプログラマはSTLっぽいインターフェースよりも単純にノード繋げた方のが使いやすいだろうな...
正直公開するか迷った。
今後は
- map(ハッシュ版(unordered_map)はlibdatastructにあるので)
- vector(多分いらないなこれ...)
とか作るかも。
- それぞれのコンテナにそのコンテナのイテレータを操作する関数をメンバとして持たせる
- iterator.hにその関数を呼び出すマクロ(iter_incl()とかiter_decl()とか)を置いておく
- list.hとか他のコンテナのヘッダではit = it->nextとか++itするマクロを置いておく
とかすればiterator.hをインクルードしなければ高速なマクロ版を使えそうとか思ったけど
- コンテナをインクルードして
- その他のコンテナをインクルードした
場合はマクロ名被っちゃうからだめじゃん...とか思ったり。
その場合iterator.hをインクルードすればいいのかな。
でも勝手にiterator.hをインクルードされるのはちょっと...*1
どうすればいいんだろうか。
*1:でもそんなに宣言するシンボルが少なければ問題ないような気がする