身内向けですがせっかく作ったので。 土日に深夜のテンションで作ったので抜け漏れ誤字脱字だらけだと思います…Read less
最近会社でプロジェクトメンバーにソースコードレビューしてもらう習慣ができました。 自分のソースコードをリーダー・後輩にレビューしてもらったんですが自分のコードを晒す事と人のコードを読む事に勝る勉強はない。 それで今回は一つの指摘点にスポットを当ててみた。 //これって引数の値に変更がないのならconst付けたほうがいいんじゃないでしょうか? void func(int x) { // 実装 } そもそもconstを付ける意味って? オブジェクトの場合 無駄なコピーをしないために参照渡しをする。 そのときに渡した値に変更を加える関数かどうかでconstを付けるか付けないかが決まる。 void func1(std::string str) { // sはstrに値をコピーする。(コピーコンストラクタが呼ばれる) // strは値を変更する事が出来る // strの値を変更してもsにはなんら影響
某曲をヘビーローテーション中. その指ごと連れてってあげる〜♪ STL のコンテナの要素になるために必要な要件は CopyConstructible (20.1.3/1 と Table 30) - 要するにコピーコンストラクタを持っていて,その意味がコピーとしてきちんと定義されていること Assignable (23.1/4 と Table 64) - 要するに代入演算子(operator=)を持っていて,その意味がコピー代入としてきちんと定義されていること (例外安全性の要件として,コピーコンストラクタと代入演算子(operator=)が強い例外安全性を保証すること,及びデストラクタが例外を送出しないこと(no-throw)を保証すること) (ちなみに SGI STL の記述では上2つを合わせたものが Assignable コンセプトになっている) 以上です.特に注意すべきこととして,デ
“C++11 feels like a new language.” – Bjarne Stroustrup The C++11 standard offers many useful new features. This page focuses specifically and only on those features that make C++11 really feel like a new language compared to C++98, because: They change the styles and idioms you’ll use when writing C++ code, often including the way you’ll design C++ libraries. For example, you’ll see more smart poi
はじめに こんにちは♪この記事は第三回レイトレ合宿のアドベントカレンダー記事だよ。 実はAOちゃんはSIGGRAPHに行っていました!すごい!というわけで適当に感想みたいなまとめみたいな記事を書くよ。ていうかレンダリングばっかです。 パストレーシング大流行 最初はパストレーシングの大流行についてだよ。まず歴史の話だけど、映画業界におけるコンピュータグラフィックスの利用というのは、VFXとフル3DCGアニメーションの二つが主要な利用法でした。そして、これらを実現するために利用されていたレンダラこそPixarが開発しているRenderManと呼ばれるレンダラでした。RenderManのレンダリングアーキテクチャはREYESというものです。REYESは"Renders Everything You Ever Saw"の略です。 REYESアーキテクチャはどちらかというとラスタライズに近いものです
この記事はC++ Advent Calendar 2013の15日目にエントリしています。 内容はC++標準ライブラリとスレッドセーフに関する解説になります。 flickr / rennasverden もくじ What's スレッドセーフ? スレッドセーフという幻想 基本型とデータ競合 C++標準ライブラリとデータ競合 C++標準ライブラリ:シーケンスコンテナ編 C++標準ライブラリ:連想コンテナ編 スレッドセーフ RELOADED 基本的なスレッドセーフ保証 std::shared_ptr<T> std::rand() std::cout (本文のみ約9000字) はじめに マルチスレッド対応の点では他言語に遅れを取っていたプログラミング言語C++ですが、C++11ではようやく標準ライブラリにスレッドサポートが追加されました。C++11スレッドサポートではスレッドクラスstd::thr
C++ boost ライブラリ インストール Visual Studio2012でBoostライブラリを入れた時のメモです。 この記事を書いた時点での最新バージョンは Version 1.53.0 です。 下記サイトから最新バージョンをダウンロードします。 http://www.boost.org/ windowsであればzipファイルのものをダウンロードすればおkです。 そのファイルを適当なところに展開します 自分はD直下にboostというフォルダを作りそこに展開しました D:\boost次にVisualStudioのコマンドプロンプトを開き作業フォルダを今展開したファイルのところにします。 >cd D:\boost\そして次のコマンドを実行 >\bootstrapこのコマンドは32bit版のVSのコマンドプロンプトじゃないと動かないみたいです。 上記のコマンドを実行したら次のコマンドを
先に結論 各関数の分解能*1は以下の通り メソッド名 分解能 getLocalTime 10ms程度 timeGetTime 1ms単位で指定 QueryPerformanceCounter 1秒毎の取得回数をLARGE_INTEGER(64bit int)で指定 経緯 getLocalTimeでアプリの性能計測していた所、1ms単位のシビアな計測箇所で、開始時刻と終了時刻が同一の場合があった。 複数スレッドでgetLocalTimeしていた為、スレッドが原因と勘違いし、調査に時間を浪費。 MSDNに分解能をちゃんと書いてくれ…。 getLocalTime 10ms程度の誤差が出る模様(分解能が10ms?)0.1秒単位の精度でよいなら、これを使ってOK。 ついでに言うとsleepも同様の精度らしいです。 TimeGetime 最初にtimeBeginPeriodで1ms単位で分解能を指定。
Specifies the exception handling model support generated by the compiler. Arguments specify whether to apply catch(...) syntax to both structured and standard C++ exceptions, whether extern "C" code is assumed to throw exceptions, and whether to optimize away certain noexcept checks. Syntax /EHa[-] /EHs[-] /EHc[-] /EHr[-] Arguments a Enables standard C++ stack unwinding. Catches both structured (a
代わりに std::unique_ptr (あるいは boost::scoped_ptr )を使います. 何故か? struct hoge { hoge() : xxx( get_resource() ) { /* 処理 */ if( some_cond ) throw some_exception(); /* さらに処理 */ } ~hoge() throw(){ release_resource(xxx); } /* ... */ private: XXX xxx; }; このようなコードで,コンストラクタ中に例外が投げられた場合, デストラクタが呼ばれず,解放漏れが起きるからです. このような露骨な場合でなくても, struct hoge { hoge() : xxx( get_resource() ), yyy() // ここで例外! { } ~hoge() throw(){ re
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く