2010-03-01から1ヶ月間の記事一覧

トランプのボゴソート

ボゴソートとして52枚のトランプを投げる例が載っていますが、これが一体何回目のシャッフルでソートできる確率が 50% を越えるのかという話題があったので、やってみました。 1回の試行で揃う確率は なので、揃わない確率は で、n 回連続で揃わない確率は …

縦書き

C#

結構前の飲み会であんどちんさんと話してたときに、どういう経緯だったか忘れたのですが「与えられた文字列をできるだけ短い文で縦書きにするのなんて C# があれば余裕ですよ」みたいなことを自分が言った気がするので、今更ながらやってみました。 using Sy…

文字列リテラルの char[] 初期化

本の虫: C++0xでは、文字列リテラルから非constなポインタへの変換はできない に char* への変換はダメっていうのがありますが、char[] への変換はどうなの?という話です。 const char cs[] = "bjarne"; char s[] = "hage"; cs は当然 OK ですけど、s はど…

記録更新

C++0x では新しく allocator_traits というのが入るわけですが、このシグネチャはこうなってます。 namespace std { template <class Alloc> struct allocator_traits { typedef Alloc allocator_type; typedef typename Alloc::value_type value_type; typedef see below</class>…

デストラクタを呼ばずに再構築

C++

例えばこういうの。 void* p = new char[sizeof(int)]; int* pn = new (p) int(0); pn = new (p) int(42); // デストラクタを呼ばずに再構築 int の場合は POD 型なので問題ないことは分かりますが、例えばこんな場合はどうなるか。 struct hoge { ~hoge() {…

プリプロセス時のユーザ定義リテラルについて

C++0x で新しく追加されるユーザ定義リテラルはアンダースコアから始まってないとダメという制約がありますが、これがコンパイル時に問題にならないということは hito さんが書いています(本の虫: user defined literalが予約語の制約を無視できる理由)。 で…

リファレンスに対する add_const

以下のソースは正常にコンパイルすることができます。 BOOST_STATIC_ASSERT((is_same<add_const<int&>::type, int&>::value)); int& に const 修飾すると int& になるということです。 これは不思議で仕方がなかったので、調べてみました。 ポインタの場合はどうなるかという</add_const<int&>…

プリプロセッサデバッガ

昨日のことを適当にまとめてみる。 始まりはこのつぶやきから。 【急募】このコードがうまく動く理由 http://codepad.org/IwJ4sqA9 http://twitter.com/DecimalBloat/status/9965596581 これを見て、そういえば id:y-hamigaki さんが Boost.Wave を使ってプ…