2015-09-01から1ヶ月間の記事一覧

awkで偶数行目を取り出しと指定した数の倍数行に処理を追加

奇数行、偶数行を取り出す処理は、perlのワンライナーであったり、sedだったり色々あるが、今回はawkでの処理を記載。 cat filename.txt | awk 'NR % 2 == 0 {print $0;}' 偶数行目のみを取り出して、5の倍数行に改行を2つ入れる処理は以下のようにする。 ca…

haskellで数字を文字列に変換

haskellで文字列を数字に変換するにはreadを使う n = read "01235" main = print n --1234 逆に、数字から文字列に変換する場合はshowを使う。 main = print (show (read "01234")) --1234

boost::numeric::ublas::vectorの速度比較

C++

boost/numeric/ublas/vectorの生成と代入に関する速度をまとめた。 要素数を5千万にして生成と代入の速度を計測。 compiler及び環境 i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00) Macbookair 20…

C++のclassとstructの違い

C++

はっきりとした言及があまりなかったので一応メモ。 Cにおいてclassとstructは(Cには記憶クラスというものがあって)全くの別物だが、C++ではstructとclassに機能的な違いはない。 structとclassの違い 振る舞いとしての唯一の違いはデフォルトのアクセス指…

C++のstaticに関するまとめ

C++

static(メンバ)変数への代入について知識がうろ覚えだったので、整理した。要点は以下。 staticな変数は宣言と同時に代入する staticなstruct型の初期化は{}で行う. class内のstaticなメンバに代入するときはクラスの宣言の外で代入.また型の指定が必要. c…

nullptrまとめ

C++11から追加されたnullptrのまとめ 概要 More C++ Idioms/nullptr - Wikibooks ライブラリ版 C++0x nullptr の実装 - Faith and Brave - C++で遊ぼう ライブラリ版の問題 ライブラリ版nullptrの悲劇 - 名古屋313の日記

C++の組み込み型はクラスとして扱える

C++

タイトル通り。 doubleという名前のクラスと思って以下でdoubleの値を生成できる。 double a = double() double b = double(1.0) ポインタも同様のことが可能だがtypedefが必要 double* a = double*(); //error double* b = (double*)(); //error typedef do…

ディレクトリ以下の特定ディレクトリを除外しファイル列挙

特定のディレクトリを除外して、カレントディレクトリ以下のファイルを列挙する。例えば、includeを除いて、.hファイルを全部列挙。 findを使って以下のようにかける。 find . -type d -name "include" -prune -o -name "*.h" -print 列挙したファイルのファ…

boost::bindとboost::functionをメンバ関数に使う

C++

タイトル通り。 boost::bindはメンバ関数を指定すると、第一引数にクラスを引数に取る関数として解釈される。 例 #include <iostream> #include <boost/function.hpp> #include <boost/bind.hpp> struct LinearExtrapolation { LinearExtrapolation( const double leftPoint, const double leftValue, const</boost/bind.hpp></boost/function.hpp></iostream>…

MacでHaskell

Haskellを使えるようにする。 haskell-platformというのがあるのでそれをインストールすればHaskellを使うのに必要なものが一通りインストールされる。 Macportsがあれば以下でおっけー。 sudo port install haskell-platform で良い。 haskellのパッケージ…

C++でClass内のtypedefにもpublic, privateは適用される

C++

タイトル通りだが、以下がサンプル。 テンプレートを使う時に重要になるのでメモ。 class Test { private: typedef double private_real; public: typedef double public_real; }; int main(int argc, char const* argv[]) { Test::public_real public_real …