2011-01-01から1年間の記事一覧

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>…