Cpp
サイト 2 簡単な計算 // sample01.cc #include <stdio.h> main(void) { printf("Computer in Physics\n"); } gcc sample01.cc -o sample01 ./sample01// sample02.cc #include <stdio.h> main(void) { int a, b, c; a=1; b=2; c=a+b; printf(" %d + %d = %d \n", a, b, c ); } </stdio.h></stdio.h>…
cppのSTLはイテレータを使うのが特徴 画像データを扱うitkではイテレータを使って画像情報をスキャンしたり操作したりするが、ちょっと違う その違いは イテレータが画像を持つ STLのイテレータは、コンテナのメンバーとしてイテレータを置くので、一つのオ…
まずはこの章をまるごと覚えよう vector/listコンテナクラス、操作法、反復子(イテレータ)、アルゴリズム、関数オブジェクトまで、一通り出てくる STLは、よく使うだろう処理を作っておいてくれて、それを使う人は楽チンな使い方をしてよいようにした「サー…
STLの三要素 コンテナ、アルゴリズム、反復子(イテレータ) STLのその他の要素 アロケータ、関数オブジェクト、アダプタ
STL標準講座―標準テンプレートライブラリを利用したC++プログラミング (Programmer’s SELECTION)作者: ハーバートシルト,エピステーメー,Herbert Schildt,多摩ソフトウェア出版社/メーカー: 翔泳社発売日: 1999/08/01メディア: 単行本購入: 3人 クリック: 20…
#include する 累和、差分、内積などがある でも、この辺りは、もっと数値演算用のライブラリを持ってくるのがよいのだろう
数値専用のvectorのようなもの。vectorより高効率 三角関数とか指数関数なんかもあるし、 sliceして2次元(行列)扱いもできるし、gsliceを使って多次元化もできる
アロケータ メモリをどうハンドリングするかを決めるのがアロケータ アロケータもオブジェクトで、コンテナオブジェクトを作ると、メンバーとしてアロケータが作られる カスタムコンテナ STLのコンテナを拡張して作る 作成自体はそれなりに簡単だけれど、「…
要素にアクセスするためのポインタ(を一般化したもの)として使うだけなら、この章の理解は不要
『関数オブジェクトとはoperator()が定義されているクラスのこと』 #include でincludeする 単項関数オブジェクトと二項関数オブジェクトに分類できる テンプレート関数になっているからもちろん(対応する)すべてのコンテナクラスで同じように使える 自作関…
アルゴリズムは(対応する)複数のコンテナに対応するように作られていて、そういう意味で「テンプレート」なものであり、「テンプレート」になった「関数」なので「関数テンプレート」 #include でincludeする 反復子(イテレータ)でアクセスする→シークエンス…
コンテナのいろいろ紹介 1つ覚えるなら、vectorを 2つ覚えるなら、vectorとlistを ハッシュ・連想を使うならmapも 集合的に扱いたいならsetも
入門段階から色々使いやすいところまで 少しわかってから
この記事の「なんちゃってRパッケージ」はこちら Here is the github containing files and directories handled in this note. Rcppのよさは、Rcppファイルを作ると、Cpp関数をRから呼び出す関数(ラッパー関数)を書く必要がないこと Rxpp is a package to u…
目標は、複数ファイルで構成したc++ファイルたちを、R用のダイナミック・ライブラリにしたうえで、それをRから呼び出して使えるようになること。Windows特有のコンパイル問題についても適宜、対処する 日英併記 Rのためのc++作者: ryamada発売日: 2015/07/22…
C++のライブラリを探していたら、ちょっと面白いスゴロクを見つけました。Dlib ライブラリ 機械学習的に課題解決をするためのC++メニューを提供してくれるライブラリですが、そのメニュー選択ガイドがスゴロク式判断分岐木でした。 機械学習の解決課題は大き…
2015年の年始にRcppについて調べ物をした。記事が散在したので整理しておく 大きく2系統 (1)Rを使えることを前提にベクトル・行列処理をRcpp化するための実践記録 (2)RでCppを使うにあたってCppってどういう構成になっていて、どうやって「あったらいいな」…
Rcppの基礎は前掲記事で終わり。ただループ処理を速くしたいだけなら、それだけでもたぶんOK C++でR的に書きたい→sugar 、データ構造やアルゴリズムで便利なライブラリを使いたい→STL (その先にboost)、RcppArmadilloなどがある C++、コンパイラに負荷がか…
Rcppを使ってみた(こちら) おおまかに分かったので、じゃあ、Rcpp/Cppの強みについておさらいしておこう 一番の基本(この記事) 少し先(sugar,STL,Armadillo) こちらを読む Rcppをいつ使う? Rのコードでできるだけのことをしても「遅い」とき それはいつ? …
math.h #include <RcppArmadilloExtensions/sample.h> // [[Rcpp::depends(RcppArmadillo)]] using namespace Rcpp ; // [[Rcpp::export]] NumericVector arith(double a, double b) { NumericVector x(28); x[0] = a+b; x[1] = a-b; x[2] = a*b; x[3] = a/b; x[4] = fmax(a,b); x[5] = round(a</rcpparmadilloextensions/sample.h>…
線形回帰 data(trees, package="datasets") fastLmPure( cbind(1, log(trees$Girth)), log(trees$Volume) ) fastLm( log(Volume) ~ log(Girth), data=trees) lm(log(trees$Volume) ~ log(trees$Girth)) > fastLmPure( cbind(1, log(trees$Girth)), log(trees…
こちらのマハラノビス距離の繰り返し計算でスピードアップの様子を見てみよう cxxfunction()関数を使っている例をsourceCpp()用に書き換えてみる データ型指定はRcpp namespace形式らしい ## Using RcppArmadillo code <- 'arma::mat x = Rcpp::as<arma::mat>(X); arma:</arma::mat>…
Cppの線形代数ライブラリArmadillo sample()をcppにしてみよう。速くはならないけれど、cpp内での処理が可能になる "csample_char.cpp","csample_num.cpp"という関数ファイルを作って、sourceRcpp()する(参考) // [[Rcpp::depends(RcppArmadillo)]] #include <RcppArmadilloExtensions/sample.h></rcpparmadilloextensions/sample.h>…