唯物是真 @Scaled_Wurm

プログラミング(主にPython2.7)とか機械学習とか

C++

MeCabのC++ライブラリを使ってみた(C++11のマルチスレッドに触ってみた)

MeCabをマルチスレッドで動かしてみたい!という話です。 マルチスレッドの方法としてはC++11のstd::threadを使います。MeCabをマルチスレッドで動かす方法については以下の記事が参考になりました。 MeCabをC++から使ってみる | mwSoft またMeCab公式にもマ…

「フィボナッチで各種言語をベンチマーク」を読んで、C++で色々試してみた

C++

↓この辺りの記事を見て色々と試したくなった。 フィボナッチで各種言語をベンチマーク - satosystemsの日記 フィボナッチで各種言語をベンチマーク C++バージョン - なかGの日記 以下の方法でフィボナッチ数列を計算してみる 素の関数(元々の記事と一緒) fib…

Dartsの仕様につまづいた話――あるいはMeCabに些細なバグを見つけた話

Double ArrayによるTrieのライブラリDartsのcommonPrefixSearch関数は次のような戻り値と引数になっています。 size_t commonPrefixSearch(const key_type *key, T* result, size_t result_len, size_t len = 0, size_t node_pos = 0);ここでresult_lenは結…

std::threadを使った時にハマったところ

c++

コンパイル時 g++でコンパイルするときに-lpthreadしないとダメ。 std::threadの引数 参照渡しをするときには明示的にstd::refで渡さないとダメ。

std::unordered_mapをboost::serializationしたい

c++

結論 検索した程度では方法は見つからなかった 代替案 #include <boost/tr1/unordered_map.hpp>してstd::tr1::unordered_mapを使う。 すると#include <boost/serialization/unordered_map.hpp>でシリアライズできる。</boost/serialization/unordered_map.hpp></boost/tr1/unordered_map.hpp>

unordered_mapでpairとかを使うときにはhashを定義しないと動かないらしい

c++

unordered_mapにpairを突っ込んだら動かなくて悩んだんですが、自分の作ったクラスだけでなくpairとかtupleでもhashを定義しないと動かないみたいです。namespace stdに指定する方法とハッシュ関数をunordered_mapに渡す方法の2種類があるみたいですが、とり…

clang++で<thread>や<chrono>を#includeしたら動かない

c++

Ubuntuでclang++ 3.2を使っていたのですが、<chrono>をインクルードすると大量のエラーメッセージが出ました。 解決法をググっていたら以下のサイトが引っかかりました。 Clang Developers - #include with Clang 3.1 インクルードしているtype_traits、私の場合は/u</chrono>…

「Darts: Double-ARray Trie System」のサンプルコードが動かない

Darts: Double ARray Trie System Double Arrayを使いたかったので、Dartsを使おうとしたらサンプルコードが動かなくて困りました。 g++でもclang++でもダメでした。 オプションの違いとかなんですかね?exactMatchSearchに戻り値の型を指定したら一応動かせ…

clangを使ってみた

C++

LinuxでのC/C++コンパイラといえばgcc/g++でしたが、最近clang/clang++というコンパイラのエラーメッセージがわかりやすいという話をよく見かけるので試してみました。 インストール 主に以下の公式サイト通りにやります。 Clang - Getting Started configur…

非C++使いがC++に触って困ったこと

C++

たぶん機能を知らないだけなのもいくつかある気がする. エラーメッセージの意味がわからない エラーメッセージの行番号が書き間違えてる場所とぜんぜん違う 配列の長さがsizeofしないとわからない 文字列操作が貧弱 テンプレートを使うと型名がすごく長くな…

C++で多次元配列を使うとき

c++

一つの配列を使うのと,vectorを組み合わせるのとboost::multi_arrayを使うのではどれが一番使いやすいんでしょうか?

BoostをVisual Studio 2010で使う

c++

Visual Studio2010 にBoostライブラリをインストールしたのでメモ. Download Boost Library Here - BoostProからインストーラをダウンロードして実行. プロパティのVC++ディレクトリ→インクルードディレクトリにC:\Program Files\boost\boost_1_46_1,ライ…