Boostのビルドオプション

毎度アレなので、健忘録的メモ b2.exe install toolset=msvc-10.0 link=static runtime-link=static variant=debug,release threading=multi

Boost.Coroutine

Boost.CoroutineがBoost 1.55で新しいインターフェイスを搭載したとの事なので、何をどう書けばどう動くかを書いてみます。 pull_type/push_type? 今までのBoost.Coroutineは何か良く分からないシグネチャを持ったcoroutine関連らしきクラスを引数として、…

あまりにも更新していない

このままだとブログに埃が積もってしまうので、C++に限らず月一くらいで何か書いていきたい(戒め)

Boost.Coroutineの速度

前略。 http://d.hatena.ne.jp/joynote/20121207/1354863235 この記事のコードを改造して、生でカウンタとif文で動きを制御するコードを追加。 コルーチンを使った場合と、煩雑になるが生で制御した場合の速度差を実測した。検証コードが厳密じゃない(タイ…

Boost.Poolを試してみた

ゲームで使いたいBoost.Pool…だけど聞こえてくる噂はどうにも微妙…? 全ゲ連の講演とかでも時折聞いたりするものの、イマイチ「いいよ!! マジおすすめ!」っていう程のトーンで話を聞かない。 そんな中、ゲームプログラミングにおけるC++の都市伝説がTwitt…

Boost.Coroutineが正式に入ったので

Boost.Coroutineが正式にBoost入りしそうなので、Boost Vaultから試作品のBoost.Coroutineを持ってきて試してみた(※正式に入る版とはインターフェースとかだいぶ違います)。 <2012/12/11:改定> Boost.Coroutineの正式入り版がGithubにあったので、そっち…

DXライブラリを使った非同期ファイルロード(真)

DXライブラリが公式に非同期読み込みに対応したので、それについての情報を纏めておく。 コレhttp://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_other.html#R21N1 に関する注意事項。 LoadGraph等を実行した時点でのフラグで動作する SetUseASyncL…

DXライブラリでスレッドを使ったファイルロード

Cation 2012/1/29に公開されたDXライブラリ3.07で非同期読み込みが公式にサポートされたので、特殊用途以外では以下の記事の内容はあんまし意味ないです... ……また自力で実装した機能が1ヶ月以内に公式サポートだよどうなってんのorz DXライブラリ環境でマル…

move semanticsについて

人/後輩に教える時用の脳内カンペ。ムーブセマンティクス(move semantics)というのは、コピーではなく、所有権の移動をさせるように動作するような考え方のこと。 例えば、下記のコードで MyClass a; // aというインスタンスを作成 MyClass b = a; // aの中…

Boost.Geometryを使って2Dゲーム当たり判定で楽をしたい

メモ: 参考:https://sites.google.com/site/boostjp/tips/geometry 線同士の交点を求める namespace bg = boost::geometry; typedef bg::model::d2::point_xy<double> point; bg::model::linestring<point> line1 = boost::assign::list_of<point>(0, 200)(300, 400); bg::model:</point></point></double>…

暗黙のmoveとNRVO

VS2010(VC10)にて関数で返す値についての扱いをついったーで突っ込まれて実際書いて確かめた時のメモ。 #include <iostream> #include <vector> #include <boost/timer.hpp> struct Test{ std::vector<int> tmp; Test(){ std::cout << "コンストラクタ" << std::endl; } ~Test(){ std::cout << "デス</int></boost/timer.hpp></vector></iostream>…

range-based for

gcc 4.6.1をビルドしたので動作確認。 #include <iostream> #include <list> #include <memory> struct Task{ int id; Task(int id) : id(id){ std::cout << "Create Task : " << id << std::endl; } ~Task(){ std::cout << "Delete Task : " << id << std::endl; } void update(){ s</memory></list></iostream>…

ムーブセマンティクス(Move Semantics)はテクニックにすぎない

正確には、C++0xではムーブセマンティクスを実現"しやすく"なっただけで、 ムーブ自体は昔からのテクニックに過ぎない。 という事をやっと理解したっぽい?メモ。 #include <iostream> #include <vector> #include <string> std::vector<std::string> add_bar(std::vector<std::string> lhs) { lhs.push_back("bar</std::string></std::string></string></vector></iostream>…

gcc 4.5.3を使うまで:健忘録

はじめてgccをビルドったのでメモ。 未来の自分 or gccでC++0x使ってみたいだけの人用。 shに書いたらそのまま通るノリで手順書いてみる。 http://www29.atwiki.jp/akcnv/pages/28.html ありがたいこのページを参考にする感じ。 環境はUbuntu10.04 EeePC 100…

VMWare上の文字化け

の、解決手段 http://d.hatena.ne.jp/kwsktr/20100913/1284401194 まさにドンピシャで本当に助かった

Union Findデータ構造を実装

C++

大学院の授業で最小スパニング木をやって、その実装方法の途中でやったUnion Findを忘れないうちに実装。 美しいアルゴリズムを見ると本当にSUGEEEEEEEEEってなるよね。 #include <iostream> #include <vector> class UnionFind{ private: std::vector<int> data_array; const int r</int></vector></iostream>…

メモ

「現実の問題を“現実のモノ”として取り扱うのは非常に難しい。商業的な問題というだけではなく,人々は,どうしても偏見を持ったまま物事を捉えてしまうからだ。でも,スタートレックという世界を通せば,視聴者は,投げられたメッセージを偏見や先入観を持…

生産性高すぎワロタ

C#

ふと思い立ってC#でツール作ってるけど、余りにも楽でもうひどい。 Windows環境用のツール作るなら、C#一択じゃないかとか思えてきた。

剰余を使わないFizzBuzz

ついったーで剰余を使わないFizzBuzzを書いて味噌というのが流れてきて 色々やってた人が居たので、C言語に書きなおしてみた。 #include <stdio.h> int main(){ const int num = 100; int three = 3; int five = 5; int i; char *fizz="", *buzz=""; for(i=1; i<=num;</stdio.h>…

ローカルな型とか無名型をテンプレート引数として使う

ローカルな型とか無名型をテンプレート引数として使える。 ・・・オブジェクト生成時ってどうするんだろ? とりあえず動くもの。 ローカルな型 #include <vector> #include <iostream> using namespace std; int main(){ struct data{ int a,b,c; } object = {1,2,3}; vector<data> v</data></iostream></vector>…

シェーダをいじくる

重い腰を上げてDirectXを触りだしたのでメモ。 シェーダ関連: 頂点シェーダ→ジオメトリシェーダ→ピクセルシェーダの順に実行される。 頂点シェーダは頂点の描画座標というか、描画頂点というか、そういうシロモノを変形・変色する。 ジオメトリシェーダは、…

前回のカスタムデリータ使うときの話で

http://d.hatena.ne.jp/gintenlabo/20110121/1295626957にstd::functionの型消しの影響で最適化かかりにくいし、実行効率・メモリ効率も悪いよね的な事が書かれていたので、これは実測して試してみるしかないネという事なのでした。 #include <iostream> #include <memory> #in</memory></iostream>…

std::unique_ptrとカスタムデリータ使ったやっつけリソース管理メモ

現実逃避コーディングなう #include "Dxlib.h" #include <memory> #include <functional> int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode( TRUE ) ; if( DxLib_Init() == -1 ) { return -1;} SetDrawSc</functional></memory>…

lambda式をもっと刺激的に使う

面白い話を小耳に挟んだのでメモメモ #include <iostream> #include <vector> #include <functional> using namespace std; int main(){ vector<vector<int>> array; vector<int> tempA = {1,2,3,4,5,6,7,8,9,10}; array.push_back( tempA ); vector<int> tempB = {11,12,13,14,15,16,17,18,19,20}; array.push_ba</int></int></vector<int></functional></vector></iostream>…

boost::threadとstd:functionとか

#include <iostream> #include <boost/thread.hpp> #include <Windows.h> using namespace std; int main() { // Aスレッド起動 boost::thread thr( [](){ // Aスレッド内でBスレッド起動 boost::thread thr( [](){ for(size_t i=0;i < 100; ++i){ cout << "B"; Sleep(100); } } ); for(size_t i=0;i </windows.h></boost/thread.hpp></iostream>…

グローバルじゃない乱数生成(線形合同法)

C++

良質な乱数でなく、ゲームとかの演出その他程度に手軽に使う用の乱数生成用クラス #include <iostream> using namespace std; class RandomGenerator{ static const long int A = 22695477; static const long int C = 2531011; private: long int x; public: // 初期</iostream>…

 メモ

やりたい事: 動かしてて気持ちいい移動、派手で爽快感のある攻撃、俺TUEEEEEE - 東方緋想天/非想天則の移動は気持ちよかった - 俺俺コンボとか作れるとキャラTUEEEじゃなくて俺TUEEEできる - 演出大事。3Dのほうがやりやすい・・・? なんか作りたいゲーム…

イベントモドキ

std::list<std::function<bool ()>> ev_list; // 終了条件を満たしたとき、trueを返す関数オブジェクト auto lambda = []()->bool { static int i=0; cout << i++ << endl; if(i <= 20) return false; else return true; }; // リストの中にブチ込む ev_list.push_back(lambda); // </std::function<bool>…

lambdaさんの日常

#include <iostream> using namespace std; int main(){ auto lambda = []()->bool { static int i=0; cout << i++ << endl; if(i <= 20) return true; else return false; }; while( lambda() ); } 出力結果 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 便</iostream>…

trailing return type

#include <iostream> using namespace std; auto func()->int{ return 3; } int main(){ cout << func(); } 出力結果 3 ・・・オイコラ。絶対コレ、ラムダ式のついでに実装しただけだろ。 返り値の型を可変にしたいならtemplateでいいし、そもそもコレじゃ実現できない</iostream>…