2008年12月21日日曜日

お得なお知らせを使ってみた!!

先日インストールしたVS2008はsp1にバージョンアップすると、C++0x(C++の次の企画)が一部使えます.また,g++もver 4.3(だっけ?)からは-std=gnu++0xオプションを付けることで,C++0xの一部を使うことができます.

でも,どっかのblogによると,VS2008のC++0xにはバグがあるとか無いとか...
そんなわけでC++0xで実装予定の,<random>ヘッダを試してみました.

#include <iostream>
#include <random>
#include <ctime>
using namespace std;
using namespace std::tr1; // gnu++0xでは不要.

int main() {
mt19937 e(static_cast<unsigned long>(std::time(0)));
uniform_int<> d(0, 10);
variate_generator<mt19937, uniform_int<> > g(e, d);

for(int i=0;i<10;i++) cout << g() << "\t";

return 0;
}


プログラムの中身としては,0から10までの乱数を発生させます.

実行結果.

まずは,g++

c:\usr\home\cpp>g++ -std=gnu++0x test.cpp

c:\usr\home\cpp>a.exe
0 6 10 0 5 9 9 1 1 8


次いで,VS2008 SP1

C:\usr\home\Projects\HelloVS2008\Debug>HelloVS2008.exe
-4 2 1 3 -3 -4 -3 -1 -2 4


あれ,おかしくね??

0 件のコメント: