[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

タグ

c++に関するkenzan8000のブックマーク (58)

  • スレッドセーフという幻想と現実 - yohhoyの日記(別館)

    この記事は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

    スレッドセーフという幻想と現実 - yohhoyの日記(別館)
  • これでほぼ完璧! C++シングルトン基底クラスの決定版! - 株式会社CFlatの明後日スタイルのブログ

    シングルトンパターンは、デザインパターンがさっぱりわからないプログラマーでも聞いた事があるかもしれないくらい有名であるにもかかわらず、真面目に実装しようと思うと様々な問題が発生してしまいます。 具体的には、 static変数の初期化順序が未定義であるために、予期せぬ値を参照してしまう。 複数のスレッドから同時に初期化処理を行なった際、適切な同期を行なえない。 シングルトンクラスのコンストラクタでシングルトンを参照した際、無限ループが発生する。 このうち最後だけはどうにもなりませんので何とか気をつけることとして、他の2つはできれば「シングルトン基底クラス」的なクラスを継承すれば自動的にどうにかしてくれる……というのが理想的です。 なので作ってみました。 #include <memory> template <class T> class Singleton { public : static

    これでほぼ完璧! C++シングルトン基底クラスの決定版! - 株式会社CFlatの明後日スタイルのブログ
    kenzan8000
    kenzan8000 2014/03/09
    std::unique_ptr<T>
  • 本当に怖いC++erとC++という糞言語 - 神様なんて信じない僕らのために

    かつて、ゲームプログラミングはアセンブリが主流で、8bitCPUは掛け算や割り算すらないものでした。割り算がないCPUっていつの時代だよ、っていう人たちもおりますが、ゲームボーイアドバンスに搭載されているARM7TDMIは除算の命令を持っていません。(故に除算を書くと死ぬほど遅いので、乗算で代用したりする) また、浮動小数に対する演算ユニットを持っていないハードウェアもあります。ニンテンドーDSに搭載されているARM946E-Sですら、浮動小数演算ユニットはありません。(CPUの機能としてはオプションで存在する)そのために固定小数点といった技術もあるわけですが、古くさい話です。 これらはCとC++の機能を駆使していかにパフォーマンスを出すかを余儀なくされた時代です。 さておき、最近はスマートフォンでのゲーム開発も進化しており、C++iPhoneAndroidの両方で動くということもあ

    本当に怖いC++erとC++という糞言語 - 神様なんて信じない僕らのために
  • ゲーム開発者のための C++11/C++14

    15. Visual Studio は 着実に C++11/14 に対応 2010. 4 2010 auto, move, nullptr lamdas, <random> 2012. 9 2012 Range-based for, enum class <chrono> , <ratio>. <thread> 2013. 6 2013 Preview Variadic templates initializer_lists, C++14 libs 2013. 9 2013 RC Non-static data member init defaulted / deleted functions 2013. 11 2013 2013 Q4 2013 + CTP constexpr, noexcept C++14 generic lamdas

    ゲーム開発者のための C++11/C++14
  • SeriousCode/clang-warnings.h at main · macmade/SeriousCode

    kenzan8000
    kenzan8000 2013/05/21
    warning。#pragma clang diagnostic push #pragma clang diagnostic ignored #pragma clang diagnostic popで、明示的に消す場合も使う。
  • VimでObjective-Cのコード補完を実行する with clang | TOKOROM BLOG

    概要 VimEmacsでiOSアプリ開発をするときに「Snippetとかちゃんと設定してればXcodeほどのコード補完は必要ない」と強がりを言ってはみるものの「当はちょっとコード補完使いたいときあるんだよね」と思ってました。 そこで、重い腰をあげてVimでもObjective-Cのコード補完ができるよう設定してみました。 具体的には、 clangコマンドでのコード補完を試してみる その結果をもってVimの clang_complete プラグインを導入する という手順で実施しました。 結果として満足いく補完環境が整いましたので紹介させていただきます。 clangコマンドでのコード補完を試してみる clangコマンドはXcodeを使っていればはじめっから入っているコマンドです。 じつはこのclangコマンドを使うことでObjective-Cのコード補完が普通にできるとのこと。 具体的には

  • C++に予約語superがない理由 » rt:anote

    c++を参考(反面教師?)にして作られたJavaでは、 派生クラスの関数から継承元の基底クラスへの関数への参照を行う際superという予約語を使う。 例えば次のようなコード。 public class A  { public void handle(void){} } public class B extends A { public void handle(void){ super.handle(); } } c++を使っていると時々この便利な予約語がなぜなかったのだろう?とか考えてしまいます。 少し考えると、Javaでは多重継承が認められない一方で、それが可能なC++では コンパイルエラーにせざるを得ない局面があることに気づきます。 struct A { virtual void handle(void); }; struct B { virtual void handle(void)

    kenzan8000
    kenzan8000 2012/11/24
    typedef 親クラス Super;
  • Box2Dで衝突検出のみ行う方法

    @memoblog からのツイート 2021年12月(1) 2021年10月(1) 2021年08月(1) 2021年07月(1) 2021年06月(1) 2021年04月(1) 2021年03月(1) 2021年02月(1) 2021年01月(3) 2020年11月(1) 2020年10月(1) 2020年08月(1) 2020年06月(2) 2020年05月(1) 2020年04月(5) 2020年02月(5) 2020年01月(1) 2019年12月(1) 2019年11月(1) 2019年10月(1) 2019年09月(1) 2019年07月(1) 2019年06月(1) 2019年05月(3) 2019年04月(2) 2019年03月(1) 2019年02月(1) 2019年01月(1) 2018年12月(2) 2018年11月(1) 2018年10月(3) 2018年09月(1

    Box2Dで衝突検出のみ行う方法
  • Haya's homepage

    いろんなビット演算のテクニックを集めていきたいと思います。ソースは基的にC(C++)で記述されています。 実用的なもの、面白い物何でもいいので、こんなテクニックを知ってるという方や こんなのを思いついたという方はぜひ掲示板やメールなどで教えてください。 良さそうなものはここで紹介させていただきたいと思います。ここにあるコードの改良、指摘なども大歓迎です。 また、ここにあるビット演算のテクニックはフリーです。自由に使用してもらっても結構です。 なお、ソースを送る場合はそれを納得したうえで送ってください。

  • Boost Tour 1.50.0 All

    1. Boostライブラリ一周の旅 ver.1.50.0(Merge) 高橋晶(Akira Takahashi) id:faith_and_brave @cpp_akira Boost.勉強会#10 2012/07/28(土) 3. Boostとは • C++標準化委員会の人たちが作ったC++のライブラリ群 • 普段のプログラミング全般で使える基的なものから、専門 特化したものまでいろいろなライブラリがある • Google、Intel、Adobeも開発に関わっている • ライセンスはBoost Software License 1.0 – 無償で商用利用可能 – 著作権表記の必要なし – ソースコードの改変自由 4. 今回紹介するライブラリ 01.Accumulators 23.Format 45.Meta State Machine 67.Signals2 02.Algorithm

    Boost Tour 1.50.0 All
  • rvalue reference、move semanticsに挫折した人のための再入門解説 - Ideals and Reality

    この記事は C++11 Advent Calendar 14日目の記事です。 何がわかりにくいのか C++11から正式に導入される新機能である、move semanticsとrvalue referenceですが、なかなかこれを理解出来ないという人が多いようです。 ちょっと考えればなるほど、と思いますが私が思うにこのわかりにくい最大要因はやはりその名前のせいかと思います。 特にrvalue referenceですが、日語に訳すと右辺値参照という呼ばれ方をしています。 そもそも右辺値や左辺値という名称はC言語時代の流れでそのまま引き継いでいるものであり、右辺値参照という名称は言わば後付けで名称されたものです。 実際に使用する際に右辺値なのか左辺値なのかを意識している人は殆どおらず、これが余計な混乱を招いているのではないかと思います。 ではコードを書いてみて理解しましょう。 lvalueとr

    rvalue reference、move semanticsに挫折した人のための再入門解説 - Ideals and Reality
  • Boost 数学関係ライブラリの使い方

    boost::numeric::ublas 線形代数ライブラリの使い方 連立方程式を解く・逆行列を求める DT Specials -> Boost -> boost::numeric::ublas 線形代数ライブラリの使い方 Last update : Jan. 13th, 2005 はじめに この文書は,線形演算ライブラリ boost::numeric::ublas の使い方の一部を簡単に説明したものです. どうも boost ― uBLAS については日語の説明書きがないようです.頼みの日語解説書[2]も uBLAS はたった 2 ページ.Web をあさっても私の希望にあう解説は見あたりません.仕方がないので英語のオリジナルドキュメントと格闘しました.その結果,なんとか連立1次方程式を解くことと,逆行列を求めることはできるようになったので,私と同じようなお悩みを抱えて Web を巡

  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • Success is a Journey, not a Destination: 全てのCプログラマが未定義な振る舞いについて知っておくべきこと #1/3

    [What Every C Programmer Should Know About Undefined Behavior #1/3 の翻訳です。] LLVMでコンパイルしたコードは、最適化を有効にしているとたまにSIGTRAPシグナルを生成するのはなぜなのか、と聞かれることがある。いろいろ調べたあと、(X86での話だが) Clangは "ud2" インストラクションを生成していたことがわかった。"ud2" は__builtin_trap()が生成するインストラクションと同じものだ。[訳注: #UD例外を発生させる命令。ソフトウェアが#UD例外をハンドルできているかテストするために使われる。つまり、ソースコードが未定義な振る舞いを使っていたから、LLVMはud2インストラクションを生成したのであって、LLVMのバグではない、ということ] こういう問題は幾つかあって、すべて、Cの未定義な振る

  • Google C++スタイルガイド 日本語訳

    Text Drop 翻訳、プログラミング、写真、カメラなどについて書いてます。スタイルガイド/コーディング規約やチートシートなど、ちょっと便利なものを翻訳しています。 TEXTdropでは、C++プログラマーも利用できるパワフルな機能を搭載。C++のコードを書く際に行う手順や避けておきたい工程などを詳しく説明しています。コードスタイルラインの日語版では、日語訳やJ P Yへの換金もサポート。話題性があるオンラインカジノ 日円変換や入金の際のバグにも対応しています。統一性のあるコードを書くためのポイントや規約の種類を参考にする事ができます。

  • 逆引きリファレンス - boostjp

    Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode

  • 本の虫: 確率分布の使い方

    C++0xのstd::randomには、様々な分布クラスが存在する。一体どうやって使い分ければいいのか。ここでは、ゲームにたとえて考えてみる。 もっとも簡単な分布は、一様分布(Uniform distributions)である。これは、a ≦ i ≦ b, の範囲の値iを、それぞれ等しい確率で返す分布である。 ゲームでいえば、サイコロやルーレットなどの実装に使えるだろう。 // 六面サイコロの実装 int main() { std::mt19937 rng ; // 一様分布 // 0から5までの数字を等しい確率で返す分布 std::uniform_int_distribution<> dice(0, 5) ; int a[6] = { } ; // 六面サイコロの出た目の回数を記録する配列 // 600回サイコロを振る for ( int i = 0 ; i != 600 ; ++i )

  • Boost study#4

    88. Array() virtual ‾Array() void alloc(unsigned int size); void release(); void setFuncValid(FuncValid i); FuncValid funcValid(); void setFuncEqual(FuncEqual i); FuncEqual funcEqual(); void setFuncSort(FuncSort i); FuncSort funcSort(); bool valid(); unsigned int size(); T &operator[](unsigned int index); T &operator[](int index); Array<T> &operator=(const Array<T> &i); T *ptr(); void push(T&v); v

    Boost study#4
  • C++コミュニティーの中心でC++をDISる

    2. 自己紹介 • 田中 英行 (@tanakh, id:tanakh) • (株)Preferred Infrastructure 勤務 • Haskell好き/C++嫌い • C++歴13年 – 主にWindowsゲームを作ったりしていました – 最近は仕事でコンソールアプリ書いてます

    C++コミュニティーの中心でC++をDISる
  • 非Objective-Cオブジェクトを引数として渡す - Faith and Brave - C++で遊ぼう

    NSObjectのperformSelectorは、Objective-Cのオブジェクトしか渡せないので、int型の値を渡すだけでもたいへんです。NSObjectを継承したInteger型みたいなのを作るか、NSValueを使っているひとが多いと思います。 今回は、intでもstd::vectorでも、C++のオブジェクトをなんでも渡せる、performSelectorの代わりとなる関数を作りました。こんな感じです: #import <Foundation/Foundation.h> #import <boost/mpl/identity.hpp> #import <iostream> #import <vector> #import <boost/range/algorithm/for_each.hpp> #import <boost/lambda/lambda.hpp> #import

    非Objective-Cオブジェクトを引数として渡す - Faith and Brave - C++で遊ぼう