2013-03-01から1ヶ月間の記事一覧

テンプレートで書くか継承で書くか

C++

「数値計算をC++っぽく書く場合、速度的な事を考えるといちいち仮想関数テーブルを漁りにいかないのでテンプレートの方が速いんだろうな」と思っていたが、例のごとく億劫がってやってなかったので、やってみましたよというお話。結論としてはテンプレートを…

コンテナの要素を消去する際の選択

C++

これもまた良く忘れるのでメモ。 以下のようにチョイスするのが効率的。 連続メモリコンテナ系(vector, deque, string etc):erase + remove リスト(list):remove 連想コンテナ系(set, map etc):erase 以下例、「1,2,3,3,5」という要素を格納する各コン…

スワップ技法で確保した容量を削減

C++

STLのvectorにおいて一度reserveされてしまった容量(not サイズ)を削除するための技法。 単純にreserveを再度実行しても要領は削減されないので - std::vector(x).swap(x) と書く。 #include <iostream> #include <vector> int main() { std::vector<int> x; for(int i = 0; i < 1</int></vector></iostream>…

std::uniqueするときはsortを忘れないこと

C++

std::uniqueするときはstd::sotrしてからじゃないと正しくならない点に注意せんといかん。unique_copyでも似たようなコード書ける。 #include <iostream> #include <algorithm> #include <vector> int main () { std::vector<int> v; v.push_back(0); v.push_back(1); v.push_back(2); v.push_b</int></vector></algorithm></iostream>…

ファクター(factor)を生成する関数(gl)

R

題名の通り、ファクター(factor)を生成する関数があったんで備忘録的にメモ。 名前はgl関数でたぶんGenerate Levelあたりだろうか。 > # 2レベルのデータを8個ずつ作ってそれぞれを数値じゃなくてCOntrol, Treatと名付ける > gl(2, 8, labels = c("Control",…