C++

流行りの深層学習フレームワークCaffeをC++から使ってみた

Caffeとは CaffeはBerkeley Vision and Learning Centerというところが中心となって開発している深層学習(Deep learning)フレームワークです.公式サイトの記述によれば 速い("We believe that Caffe is the fastest CNN implementation available") GPU…

charをstd::stringに変換する

C++

C++でcharからstd::stringへの変換(文字から文字列へ,例えば'a'から"a"へ)をどうするか,すごく簡単そうに見えていざ検索してみるとchar[]とstd::stringの間の変換についての記述しか見つからなかったので書いておこうと思います. 「std::stringのコンス…

GCC 4.8.2をビルドしてホームディレクトリにインストール

C++

概要 あるサーバ上でC++11の機能をフルに使いたかったがGCCが古かったのでGCC 4.8.2を新たにインストールした.管理者権限が無いのでソースからコンパイルして$HOME/localにインストールした. 環境 OS Linux x86_64 元のGCC 4.3.2 手順 # Download GCC 4.8.…

Mac OSX Lionでcpp-netlibのビルドに失敗したときのメモ

C++

環境 Mac OS X 10.7.5 cpp-netlib 0.9.4 GCC 4.7.0 CMake 2.8.11 Boost 1.53.0 手順 http://cpp-netlib.org/0.9.4/getting_started.html#getting-startedの通り https://github.com/cpp-netlib/cpp-netlib/downloadsからダウンロードし~/cpp-netlibに展開 下…

共有ライブラリの動的リンクによりインタフェースの実装を読み込むポリモーフィズム

C++

ヘッダファイルで定義されているdlopen,dlsym,dlerror,dlclose等の関数を用いると共有ライブラリの動的リンクを行うことができます.オブジェクトへのポインタを返す関数へのポインタをdlsymにより取得することで,特定のインタフェースを実装した未知の…

JavaからC++へのshared_ptrを用いた移植

最近Javaで書いたプログラム(1万行ほど)をC++に移植しました.プログラムの構造はあまり変えたくなく,またメモリ管理についてあまり考えたくなかったのでshared_ptrを使って以下のように機械的に変換したところ,とりあえずSegmentation Faultなく動きま…

C++のboost::unordered_mapはvectorをkeyにできる

C++

C++のboost::unordered_mapはvectorをそのままkeyにできます.複数の値の組み合わせをkeyにしたい場合,連結した文字列をkeyにするよりはvectorをkeyにしたほうがパフォーマンスが良いようです.

double型の最小値はDBL_MINではなく-DBL_MAX

C C++

CやC++でdouble型の最小値が欲しい場合,やで定義されているDBL_MINが一見それに当たるように見えますが,DBL_MINは正の最小値です.負の範囲まで含めた最小値が欲しい場合は-DBL_MAXを使いましょう.複数の値の中から最大値を求める際に,比較するための初…