C++

Boost.Coroutineのローカル変数の寿命

C++

Boost1.53.0リリースされてましたね。個人的に気になっているのはCoroutine。 pythonのyeildみたいなことが出来るライブラリ。ローカル変数の寿命が気になったのでちょいと調べた。 #include <boost/coroutine/coroutine.hpp> #include <iostream> typedef boost::coroutines::coroutine<int()> coroutine_typ</int()></iostream></boost/coroutine/coroutine.hpp>…

C++0xのラムダのインライン化

C++

インライン化されるのか調べた。 されるっぽい(g++ 4.6.3調べ)。すばらしい。 まあ関数オブジェクト作ってるだけらしいので当たり前かもしれないけど。 int func(int x){ const auto inc = [](int x){ return x + 1; }; return inc(x); } これが _Z4funci: .…

const教

C++

ガチではないですが、私はわりとconst教寄りな人です。で、c++な入力使うと(cinとか)変数constにできなくね、とこれまで思っていたのですが、こうすれば出来るじゃん、なアイデアが浮かんだのでメモ。 const int i = *istream_iterator<int>(cin); これでconstな</int>…

メモ化再帰小技

AOJのTLE厳しいです…ということでメモ化再帰だと少しだけTLEする、 あるいはTLEが心配みたいな時の小技をメモ。 int solve(int pos){ if(pos == n) return hoge; if(memo[pos] != -1) return memo[pos]; // なんか処理 return memo[pos] = ret; } みたいな処…

プログラミングコンテストチャレンジブックの最小費用流

C++

最小費用流を使う問題に初めて遭遇したので、蟻本の写経をしました。 そのときに蟻本の最小費用流の2つめのコードがうまくうごかなくてすごくはまってしまった。 どうみても本文をおろそかにした自分のミス。 どうやら、hを計算するというコードが省略され…

listのsizeについて

C++

Effective STLによるとlist::sizeはリストのサイズに比例した時間がかかることがあるそうです(実装次第らしい)。 実際にg++で試したところ、たしかにそのようになっていました。もしそうだとリスト(lst)のサイズが大きい時に、 lst.size() などの呼び出しが…

適当にヘッダを生成するツール

C++

つくりました。 なにができるの? 毎回毎回 #include<iostream> #include<vector> ... とか書くのめんどくさいですよね?雛形ファイル作ってもいいですが、多めに書いておくと最終的なソースが汚くなる気がします。そこで、自動的にそういうのを生成しちゃえ、というツールです</vector></iostream>…