底辺大学の院生がプログラミングや機械学習を勉強するブログ

勉強していることを雑にまとめるブログ。当然、正しさの保証は一切しない。

C/C++

演算子オーバーロードとfriend関数

行列の計算を今までEigenにやらせてたんだけど、やっぱり自分で作るかーと思ったのでここ数日行列クラスを実装する作業に明け暮れてた。こんな感じ。 // TEMPLATE CLASS Matrix template <class Ty_> class Matrix { // define my matrix class std::vector<std::vector<Ty_>> mat_; publ</std::vector<ty_></class>…

C++の仮想関数を復習する

前回も登場した同僚のC#erと仮想関数の使い方について話していたとき、主にvirtualの意味についてこんがらがってきたので復習することにした。このあたりはC++を勉強する初学者が最も躓きやすいところだよなぁとつくづく思う。 さて、これから女の子の名前を…

overrideキーワードをつける

先日同僚のC#erのコード見てたら、 public override void func() { // code } こんな風にメンバ関数の定義を書いていた。 その時は、へーC#にはoverrideキーワードなんてあるんだーと思うだけだったけど、実はC++にもあるらしい。使い方はこんな感じ。 class…

autoキーワードとアロー演算子

昨日なんか書くネタあるかなーって、C++のことを色々調べてたらこんなコード見つけた。 auto add(const int x, const int y) -> int { return x + y; } ??? なんやこのコード……。 まあ予想はつくけど、戻り値の型を明示的にするための演算子のようだ。 au…

スマートポインタ

qiita.comスマートポインタについての知識がないC++使いは嫌らしいので猛省して勉強することとする。 スマートポインタ概要 ポインタを用いてメモリを動的確保をする場合、解放のし忘れが無いようにコーディングしなければならないことは周知の事実である。 …

コンストラクタ初期化子を使う

多分知ってる人からしたら今更な内容。 今までコンストラクタでメンバ変数を初期化する際はこんなコードを書いてた。 MyClass(const int value) { value_ = value; } これと同じことが下のコードでもできる。 MyClass(const int value) : value_(value) {} …

円周率を求めるシミュレータをマルチスレッド化して高速化する

C++11を使ったマルチスレッドプログラミング。モンテカルロ法で円周率を求める。 モンテカルロ法 - Wikipedia 一番簡単に非同期処理ができるstd::threadで実行してもいいけど、こちらは戻り値を返せない。 一応、結果を入れたい変数を参照渡しするとか、結果…

「int *a」 vs. 「int* a」

どっちでもいいってことで決着はついてるけど暇だし蒸し返してみる。 ちなみに僕は「int* a」派。 教科書は「int *a」が多い気がする。僕がC++を勉強した独習C++も「int *a」だった。独習C++ 第4版作者: ハーバート・シルト,神林靖,トップスタジオ出版社/メ…