C/C++– category –
-
【C++】ループの正しい逆順走査
ループ(for文)の逆順走査には rbegin(),rend()のイテレータを使用する方法インデックスをデクリメント する方法が代表的です. イテレータ(rbegin(),rend())を使用している場合,std::distanceなどでインデックスを得ることが出来ます. しかしながら... -
【C++】STLコンテナVectorをソートした場合のメモリアライメントに関して調査した
メモリ配置が連続でない場合,メモリアクセスの不連続が生じてしまいます. algorithmヘッダに含まれるstd::sortを使用した場合,どのような挙動をするのか,少し疑問に感じたため調査しました. 調査内容 まず,次のような動的配列を用意します. std::ve... -
【C++】Boostをソースからインストールする(必要なライブラリのみ)
Boostは比較的大きなライブラリ群です. すべてのライブラリをインストールしても問題ありませんが,必要なライブラリを把握している場合,必要なものだけインストールすることで,ライブラリサイズを削減できます. インストール方法 デフォルトインスト... -
【デザインパターン】ObserverパターンをC++で実装
Observerパターン(オブザーバーパターン)は,デザインパターンの中でも特に重要でよく利用されるパターンです. C++でObserverパターンを実装します. Observerパターンとは 観察者(Observerクラス)と通知者(Subjectクラス)の二つのクラスで表現する... -
【C++】cbrt(x) vs pow(x,1/3) 立方根(三乗根)演算速度を比較してみた
C++11以降において,立方根(三乗根)の計算の際に,一般的に数学関数(<cmath>ヘッダ)を使用します. 平方根関数std::sqrtはよく知られていますが,立方根std::cbrtは意外と知られていません 立方根の算出するべき乗関数std::pow(x,1/3)と立方根関... -
【C++】sqrt(x) vs pow(x,0.5) 平方根の演算速度を比較してみた
C++において,平方根計算の際に,一般的に数学関数(<cmath>ヘッダ)を使用します. 平方根の算出には,専用関数std::sqrt(x)とべき乗関数std::pow(x,0.5e0)を使用する方法が考えられます. この記事では,std::sqrtとstd::powによる平方根算出の速... -
【C++】std::random_deviceは遅い?乱数生成器の速度を比較してみた
C++において,乱数といえば<random>ヘッダを使用して乱数生成をするのが一般的です. 乱数は,「真の乱数」と「疑似乱数」に分類されます. 「真の乱数」は真のランダムな数のため,乱数としての信頼性は高く,再現性はありません. 一方で,「疑似... -
【C++】 文字列と数値の安全な相互変換と速度比較
私は普段からC++を愛用していますが,何気に文字列と数値変換に関してはよくググります.この記事では,個人的な備忘録の意味合いが大きいですが,「文字列と数値の変換」と「変換速度」についてまとめておきます. 文字列と数値の変換する場合,一見簡単... -
【C++】std::vectorにおける要素追加の速度比較(push_back, reserve, resize)
C++において,std::vectorは動的確保可能な配列として非常によく利用されます.配列を動的に確保できることで非常に使いやすい一方で,配列を確保する方法に次第では速度に大きく影響します. std::vectorはこれまでに数多く比較されていると思いますが,...