C++

札幌 C++ 勉強会

去年の末には group はできてたんだけど忙しかったりしたので今さらだけど宣伝。 https://groups.google.com/group/sapporo-cplusplus-study で、 2/26 に初勉強会と懇親会を行うことになりました。 http://atnd.org/events/11828 http://atnd.org/events/11…

C# inheritance keywords ( and comparison with those of C++ )

継承関係の keyword まとめ。 abstract 「抽象」という意味を付加する keyword 。 C++ でいう「純粋仮想」という概念にあたる。あたるけどそもそも「純粋仮想」の意味がアレだし code level でも "virtual" と末尾の "= 0" で表現されるから直感的じゃないん…

C++ template and C# Generics

comment でいいこと教えてもらったので修正。 id:matarillo さんありがとう。C# いじってて Generics てのを知ったんだけど要は C++ の template だろーみたいな感じで触ってたら見事に違うことに気がついたのでちょいとまとめ。いやまぁ C++/CLI ていう文脈…

Boost.Spirit そのに from stream

http://www.boost.org/doc/libs/1_44_0/libs/spirit/doc/html/spirit/qi/tutorials.html は Boost.Spirit.Qi を使って parser を書く上ですばらしい資料なんだけど入力が std::string を想定してるようであんまり広がらない。というわけで stream から流し込…

Boost.Spirit そのいち

http://www.boost.org/doc/libs/1_44_0/libs/spirit/doc/html/index.html http://www.boost.org/doc/libs/1_44_0/libs/spirit/doc/html/spirit/introduction.html http://www.boost.org/doc/libs/1_44_0/libs/spirit/doc/html/spirit/structure/include.html…

Boost.Variant そのご boost::recursive_wrapper<> の中身

もうちょっとだけ続くんじゃ。 http://d.hatena.ne.jp/janus_wel/20101009/1286612190 boost::recursive_wrapper<> は言語仕様でできないことをしているわけでどうやって実現してるんだろうという方向へ。というわけで source を覗いてみた。さぞかしすごい…

Boost.Variant そのよん 二分木で計算

http://d.hatena.ne.jp/janus_wel/20101009/1286612190 の続き。 boost::recursive_wrapper<> を使うと何がうれしいのかというのを実際に確かめてみようという段。とはいうもののいい例を思いつかなかったので tutorial の例がすばらしすぎたので http://www…

Boost.Variant そのさん boost::recursive_wrapper<>

http://d.hatena.ne.jp/janus_wel/20101004/1286201416 までで単純な data structure を構築することができるはず。最後に再帰的な data structure を構成するための utility class を使ってちょっと遊んでみる。まず前提として型まわりの挙動から。 C++ で…

Boost.Variant そのに

http://www.boost.org/doc/libs/1_44_0/doc/html/variant.html http://d.hatena.ne.jp/janus_wel/20101004/1286191398 で Boost.Variant が何かがわかったところで実際に使って何か書いてみる。とはいうもののいい例がなかったのでとりあえず sort してみた…

Boost.Variant そのいち

http://www.boost.org/doc/libs/1_44_0/doc/html/variant.html 本格的に boost を触る前に、というかおれの触りたい Boost.Spirit が data structure として Boost.Variant を前提ぽい感じで使ってて document にも「わかっとけ」的なことが書いてあったので…

installing boost with Visual C++ 2010

http://www.boost.org/ ちょいと使ってみたい library があったというのといつまでも手をださんわけにはいかんじゃろという打算からいれてみた。まずは msvc で。下記にすべて書いてある。 http://www.boost.org/doc/libs/1_44_0/more/getting_started/windo…

installing boost with gcc on andLinux

http://d.hatena.ne.jp/janus_wel/20100928/1285678622 で msvc の環境を整えたので gcc のほうを。環境は andLinux 2.6.22.18-co-0.7.4 gcc 4.3.3 。 apt でいれる方法もあるんだけど andLinux だとちょいと古い。まずいろいろ package が必要なので root …

binary tree

いきなりだが以下の code を見てくれ。こいつをどう思う ? /* * main.cpp * binary tree * * written by janus_wel<janus.wel.3@gmail.com> * This source code is in public domain, and has NO WARRANTY. * */ #include <iostream> namespace data { namespace binarytree { template<typename Elem> struct</typename></iostream></janus.wel.3@gmail.com>…

Brainf*ck interpreter 安全化

http://d.hatena.ne.jp/janus_wel/20100920/1284988462 の続きのようであまり関係ないハナシ。 brainf*ck は仕様どおりに実装すると食わせる script によっては memory access violation しちゃったりするのでそこらへん直そうかとか。 http://github.com/ja…

Brainf*ck interpreter 高速化そのに

http://d.hatena.ne.jp/janus_wel/20100920/1284973323 でまともに見えるオレオレ命令列を作ることができたけどもう少し何とかなりそう。具体的には [ と ] 。ちなみに今回の内容は元ネタの http://d.hatena.ne.jp/hogelog/20100914/p1 のまんまパクリ。 htt…

Brainf*ck interpreter 高速化そのいち

http://d.hatena.ne.jp/janus_wel/20100919/1284908467 でとりあえず brainf*ck interpreter を書いたわけだけどあまりに仕様どおりで正直に文字列処理してるもんだからどうやったって速度なんかでねぇよ ! ってのはまぁ普通に気付く。とりあえずどの方向に…

file に関連付けられた stream かどうか

file size 調査用に istream を受け取ってその最後の streampos を返す関数、てのを作ってたんだけどこいつの test してたら関数 std::istream::tellg(0) の返り値が非負の場合 file っぽいことに気付いたのでそういう関数作ってみた。 http://github.com/ja…

Brainf*ck interpreter

http://ja.wikipedia.org/wiki/Brainfuck http://d.hatena.ne.jp/hogelog/20100914/p1 読んでいろいろいじるには brainf*ck がいい教材だということに気付いたのでとりあえず base になる interpreter code を書いてみた。細かい処理内容は元ネタの記事と一…

new 配列の初期化

C++

new で配列確保と同時に初期化ってできなかったっけ ? と思って調べてみたら default constructor をもっている class type や arithmetic, enumeration, pointer, pointer-to-member type なら以下のように書くことができるらしい。 class bullet {}; int m…

C++ で Algorithm - 0と1を次々と返す簡単なお仕事

http://blog.livedoor.jp/dankogai/archives/51512419.html を見て。まず素直に。 /* * class flipflop * * written by janus_wel<janus.wel.3@gmail.com> * This source code is in public domain, and has NO WARRANTY. * */ #include <iomanip> #include <iostream> class flipflop { private: bool </iostream></iomanip></janus.wel.3@gmail.com>…

avsutil

ようやっと実行 file を配布できるようになったよ。 http://github.com/downloads/januswel/avsutil/avsutil.20100621.zip http://github.com/januswel/avsutil/downloads 何をするものかは以下。あー exe は全部 CUI ね。 dll/ avsutil.dll これが本体のつ…

cpplib に X11 license を適用した

http://github.com/januswel/cpplib 対象範囲が広がるかな ( GPL にも組み込める ) というのとこんなもん誰でも思いつくという理由で source は全部 public domain にしてたんだけど GPL と X11 license は別に矛盾しないことに気付いたのとまぁ著作権主張し…

dll 作成時の def file

C++ みたいに名前空間がある言語はどうすんだろうと思ったんだけどあくまで関数名で認識するぽい ? というのも例えば void dll::foo(void); な関数があったとして以下のように書くのかと思ったら LIBRARY EXPORTS dll::foo 以下が正解だったので。 LIBRARY E…

四捨五入 & 最近接偶数丸め

字面的に強キャラぽい。 C99 で math.h に round() が定義されているみたいなんだけどどうも VS10 で使えないみたいだし cmath には入ってないぽい ( C++98 だからないのが当たり前なのか ? ) ので書いてみた。 http://github.com/januswel/cpplib/blob/mast…

counter

incrementor と言った方がいいかな。 http://github.com/januswel/cpplib/commit/e66b3c5845034b960ea4f53bce7480680e7bae96 http://github.com/januswel/cpplib/blob/master/header/algorithm.hpp 以下のような classical な code を #include <vector> int main(vo</vector>…

STL algorithm の進捗状況を表示する

とはいっても std::transform だけなんだけど。もうちょっと考えてうまく構造化してやればできるはず。思いつきで書いてます。 http://github.com/januswel/cpplib/commit/2b0e6e80818ca955260ce3980f4129e99fb65aa2 http://github.com/januswel/cpplib/blob…

文字じゃねぇ

comment で istream に std::noskipws manipulator を流し込むか std::istream::unsetf() に std::ios_base::skipws を指定しろと教えてもらったので ( http://togetter.com/li/30132 ) そっちで。ありがとう id:melpon と zakkas783 さん。自前 library に …

続・続・ streambuf と iostream

http://d.hatena.ne.jp/janus_wel/20100616/1276702908 の続き。とりあえず抑えるべきことは抑えたぽいので実際に code を書いてみる。何かの device に書き込むというのもちょっとめんどくさいので今回は入力専用で alphabet を順に返す stream を定義して…

続・ streambuf と iostream

http://d.hatena.ne.jp/janus_wel/20100616/1276702604 の続き。仕様に書いてある仮想関数で定義するべきことを要約する、というのが次にやるべきことなんだけどその前に streambuf の buf の部分、 buffering に関連することを理解する必要がある。とはいっ…

streambuf と iostream

std::streambuf と std::iostream / std::istream / std::ostream のどれかを継承して自分好みの stream を作ろうとかそういうアレ。多分 3 回目くらいの try 。今まで適当にいじってわかんねーわかんねー言ってたので今回はとりあえず仕様からあたることに…