C++
Google C++ Style GuideのNaming Rulesメモ 命名規則の種類 一般的に、以下の4種類の命名規則が使われる。 命名規則 説明 PascalCase 先頭大文字、それ以降の単語区切りも大文字 camelCase 先頭小文字、それ以降の単語区切りは大文字 snake_case すべての小…
Ubuntu16.04LTで機械学習ライブラリを動かすまでを記録した. ライブラリとしてはCaffeを選択. Caffe 基本↑に沿ってすすめる. http://robotics4society.com/2016/06/15/ubuntu1604-caffe/ 他にも,↑も非常に参考になる. PCの構成 OS: Ubuntu 16.04 CPU: I…
標準入出力のやり方を毎回忘れるのでメモ. 入力 注意)cinよりscanfを使う方が速い。 cinを使う場合は以下を記した上で使わないとscanfよりだいぶ遅くなる。 cin.tie(0); ios::sync_with_stdio(false); EOFまで.もしくはスペースまでの1回など int n; whi…
Shared memoryは,オンチップでキャッシュされないグローバルメモリにアクセスするより100倍速い. Shared memoryはブロックごとに配置されているおり,同じブロックのスレッドは,Shared memoryにアクセスできる. そのため,競合を防ぐために__syncthreads…
Google C++ Style Guideを読んで、勉強になったことをメモ Google C++ Style Guide http://www.textdrop.net/google-styleguide-ja/cppguide.xml 参照型ってなに yusuke-ujitoko.hatenablog.com 一言で言うと変数のエイリアス。 ミューテータ(mutators)って…
関数ポインタ概要 関数は実行コードの開始アドレスを持っている。 このアドレスをポインタに格納することができる。 このポインタを関数ポインタという。このポインタを使って、関数を呼び出すことができる 宣言例 int foo(int n); //int型を返す関数foo int…
基本概念 関数オブジェクト(Functor)とはoperator()をメンバに持つクラスのオブジェクトのこと。 関数オブジェクトは一般の関数の代わりに使うこともできる。 関数オブジェクトは、その実行に必要なデータをオブジェクト内に保持することができるので便利…
One definition rule(ODR)の基本概念 あらゆる変数、関数、クラス型、enum型、テンプレートについて基本的に複数の定義を持つことはできないというルール このことは、ISO C++ Standard(ISO/IEC 14882) section3.2に記してある。 In any translation unit,…
基本概念 委譲を行うオブジェクトは委譲先オブジェクトへの参照を持ち、必要に応じてその参照を切り替える事で動作にバリエーションを持たせる事ができる。 一種の実装遅延、プラグイン機構である。 一例としては、オブジェクトの編集を行う時、編集の前処理…
無名名前空間とは何か 基本概念 無名名前空間(unnamed namespace)とは外部リンケージを持たない名前空間のこと。 これによってファイルスコープ内でのみ有効な局所的な変数や関数を宣言できる。 外部から読み取れない 無名名前空間内で宣言されたシンボルは…
ヘッダーの相互参照の問題 c++で以下のようにclass Aとclass Bでお互い参照したいときには、以下のように書くはず。 #ifndef _A_H_ #define _A_H_ #include "B.h" class A{ B* b; } #ifndef _B_H_ #define _B_H_ #include "A.h" class B{ A* a; } ところが、…
注意)調べた限りでは日本語圏と英語圏で定義が異なる可能性あり。 下記は英語圏の定義である。 アクセサ、ミューテータ概要 アクセサ(accessors)はデータメンバにアクセスするためのメンバ関数。 データメンバの操作を行えるメンバ関数はミューテータ(mutato…
※ここではいわゆる独立参照(independent reference)を扱う。関数への参照仮引数などは扱わない。 基本概念 wikipediaの説明 C++における参照は、ポインタと同様「変数がメモリ上に置かれている場所」と解される場合もあるが、それよりもむしろ「その変数を…