理系学生日記

おまえはいつまで学生気分なのか

c++

boost::filesystem::recursive_directory_iterator を使ってみると

c++

Boost.Filesystem - Cube Lilac で boost::filesystem::recursive_directory_iterator が紹介されていたのですが、ぼくはこの存在を全く知りませんでした。 どのようなものかは上記エントリで非常に分かりやすく説明されていますが、ディレクトリを深さ優先…

メタ関数では本当にコンパイル時に計算してくれるのか

c++

テストコード。 を計算する。N=10 なので、答えは 55 になる。 template <int N> struct sum { static const int value = N + sum<N-1>::value; }; template <> struct sum<0> { static const int value = 0; }; int main() { return sum<10>::value; } アセンブラコード</n-1></int>…

メンバイニシャライザを使おう

c++

以下のコードを実行すると,クラス B の構築時に暗黙のうちにクラス A のコンストラクタが呼び出され,メンバの a が構築される.結果として "constructor A" なる文字列が出力されることになる. #include <iostream> class A { public: A() { std::cout << "contruct</iostream>…

シェルにリダイレクト機能をつけた

c++

シェルにリダイレクト機能をつけるというのは,わりかし楽だったりします. リダイレクトの仕組み まず前提としてあるのは,シェルは普通,fork によって子プロセスを作り,子プロセスが exec を呼び出してプログラムをロードし,実行するということです.こ…

Tokenizer 作りなおした

c++

Shell クラスからトークンを切り出す機能を独立させることにしました.Tokenizer クラスに持たせた機能は,セミコロンあるいはパイプで区切られる "文" をトークンに切り出すこと.仕様としては,リダイレクト記号 ('') やアンバサンドの前後にはスペースを…

シェルを作ってみた

c++

字句解析 先日友人とご飯を食べてるときにシェルの話になって,「シェル作るときって字句解析がメンドくさいよねー」って話になりました.シェルというと,fork だの dup だの pipe だのがミソみたいな感じですけど,個人的に一番メンドい印象があるのが字句…

STLに関するドキュメントとかないの?

c++

根本的な疑問なんですけども急に気になり始めまして、STLのmapで size_type erase(const key_type& k); これって何を返すの?って話です。 どうも戻り値をみる限り、map中で消去した要素数を返している感じに見えた。 ソース。 /** * @brief Erases elements…

コンストラクタからの仮想関数呼び出しにはまった

c++

いまさらハマったおwwなんでいまさらハマるのww泣いたww #include <iostream> class Parent { virtual void say() { std::cout << "親だお!" << std::endl; } public: Parent() { say(); } }; class Child : public Parent { virtual void say() { std::cout <<</iostream>…

部分行列とる方法募集

boostのublasで部分行列を作る方法ねーかなーと思って、 いろいろ聞いたりしてテストしてみた。 #include <iostream> #include <boost/numeric/ublas/matrix.hpp> #include <boost/numeric/ublas/io.hpp> #include <boost/numeric/ublas/storage.hpp> #include <boost/numeric/ublas/matrix_proxy.hpp> int main() { typedef boost::numeric::ublas::matrix<double>…</double></boost/numeric/ublas/matrix_proxy.hpp></boost/numeric/ublas/storage.hpp></boost/numeric/ublas/io.hpp></boost/numeric/ublas/matrix.hpp></iostream>