タグ

C++とc++に関するniamのブックマーク (25)

  • いつからその方法で偏りのない乱数が得られると錯覚していた? - アスペ日記

    私はつい最近まで勘違いしていました。 ここのページに書いてあるような方法で、一様分布する整数が得られると。 int random(int n) { return (int)(( rand() / (RAND_MAX + 1.0) ) * n); } この方法、一見すると実に一様分布が得られそうに見えるんですよね。 どういう思考回路を通っているかというのを自己分析すると、次のような感じです。 1. rand() では 0〜RAND_MAX のランダムな整数が得られる。 2. それを RAND_MAX + 1 で割ると、[0, 1) に一様分布する実数が得られる。 3. [0, 1) の一様な実数を n 倍して小数点以下を切り捨てたら、0 から n-1 に一様分布する整数が得られる。 これの罠なところは、1 と(特に)3 が正しいというところだと思います。 ただ、2 がダウト。 思いっきりダウ

    いつからその方法で偏りのない乱数が得られると錯覚していた? - アスペ日記
    niam
    niam 2013/08/19
  • 形態素解析器のデコーダ部分を作ってみた - Negative/Positive Thinking

    はじめに 形態素解析器のデコーダ部分を超簡単に書いてみた。 いつも通り速度などは考えずに流れを学ぶために書いているので遅い。。。 あと「辞書の構築(コスト計算)」と「未知語処理」ができればそれっぽいものができそうな予感。 速度の改善などは、double arrayにしたりバイナリ読み込みにしたり。。。 やっていること 辞書ファイルの読み込み 単語辞書 隣接可能性行列 解析したい文を入力する ラティスの構築 解の探索 ビタビアルゴリズムでコストが最小のパスを探索 パスの単語リストを出力する 辞書の準備 辞書のダウンロード NIST NAIST Japanese Dic(for MeCab)を使わせていただきます 「mecab-naist-jdic-0.6.3b-20111013」 http://sourceforge.jp/projects/naist-jdic/ ちょっと修正 文字コード変

    形態素解析器のデコーダ部分を作ってみた - Negative/Positive Thinking
  • C++11のコーディング変更点まとめ | エンタープライズ | マイコミジャーナル

    C++ is one of the most popular programming languages. 次世代のC++規格「C++11」が国際標準として発行された。多くのC++デベロッパは、この新しいC++規格で提供される新機能に関心があると思うが、仕様書を読むのは骨が折れるとためらっている方も少なくないだろう。 そんなデベロッパの皆さんに朗報だ。C++11の登場で通常のC++コーディングとライブラリデザインなどに強く影響を与えるとみられる変更がBjarne Stroustrup氏の記事「Elements of Modern C++ Style」にまとめられている。C++98と比べて特に見た目の変更が大きく、かつ、今後広く使われ新しいコーディングスタイルになりそうなものが紹介されており、C++11新機能を知るための導入ドキュメントとして役に立つ。 紹介されているC++11の新機能を簡単

  • その0:googletestについてのまとめ - エンジニアのソフトウェア的愛情

    探すとたくさんの情報があり、ドキュメントの翻訳をされているかたも少なくありませんが、自分で使うためにまとまった形にしておくと便利だと思い立ち、まとめてみることにしました。 内容は“GitHub - google/googletest: Google Test”から、ドキュメントとしてはその基礎と応用を元にしています。 導入 まずgoogletestのサイト(http://code.google.com/p/googletest/)からファイルを入手します。2009/10/02現在の最新バージョンは1.3.0です。 .tar.bz2形式、.tar.gz形式、zip形式の圧縮ファイルが用意されているので適当なファイルをダウンロードしてください。 インストールで手っ取り早いのは、そのままビルドしてインストール。 ./configure make sudo make install (2010/0

    その0:googletestについてのまとめ - エンジニアのソフトウェア的愛情
    niam
    niam 2011/07/05
  • その1:基本的な使い方 - エンジニアのソフトウェア的愛情

    最低限テストとして利用できる基的な使い方について解説します。応用についてはおいおい。 テストを記述する テストは、関数のように見えるTESTマクロを使って記述します。 TEST(テストケース名, テスト名) { テスト体 } 個々のテストは特に登録などの手続きをする必要がなく、TESTマクロを使って書き足すだけで実行の対象になってくれます。 #include <gtest/gtest.h> int add(int x, int y) { return x + y; } TEST(AddTest, Test1) { ASSERT_EQ(2, add(1, 1)); } TEST(AddTest, Test2) { ASSERT_EQ(3, add(1, 2)); } TEST(AddTest, Test3) { ASSERT_EQ(4, add(2, 2)); } int main(in

    その1:基本的な使い方 - エンジニアのソフトウェア的愛情
    niam
    niam 2011/07/05
  • C++ における const の重要性と活用 - ニートの世紀

    const なんて知らないよ、という層の人間が一定世の中には存在するようです。 そういった人間の大多数の主張は恐らく「面倒くさい」「嫌い」とかだと思うのですが、const 性に気を配るのは C++ においてはメンバ変数を private にしないといけないことと同程度にやらないといけないことです。という話をします。 const というとまず真っ先に出てくるのは「値が変わらないことでコードが読みやすくなる」とか「参照透明性のため」とかで、参照透明とか言葉がすごく綺麗ですごいって感じだと思います。ボクは参照透明という言葉がすごく好きです。 でも C++ は現実の言語なので現実を見ましょう。そんなのどうだっていいんです。 前提として C++ はそれなりに速い何かを作るための言語である、ソースコードはコメントや何らかの形のドキュメントに勝る、という二点をあげておきます。 例えば巨大なオブジェク

  • dlib C++ Library - Machine Learning

    The Library Algorithms API Wrappers Bayesian Nets Compression Containers Imaging Machine Learning Metaprogramming Miscellaneous Network Parsing Help/Info Examples Home How to compile How to contribute Index Introduction License Current Release Change Log Release Notes Version: 17.21 Sourceforge Download Files Forums Known Users Summary This page documents all the machine learning algorithms presen

  • 一番右端の立っているビット位置を求める「ものすごい」コード - 当面C#と.NETな記録

    一番右端の立っているビット位置(RightMostBit)を求めるコードで速いのないかなーと探していたら、ものっっっすごいコードに出会ってしまったのでご紹介。2ch のビット演算スレで 32bit 値のコードに出会って衝撃を受けて、その後 64bit 値版のヒントを見つけたのでコードを書いてみました。 この問題は ハッカーのたのしみ―物のプログラマはいかにして問題を解くか (Google book search で原著 Hacker's delight が読めたのでそれで済ませた) で number of trailing zeros (ntz) として紹介されています。bit で考えたときに右側に 0 がいくつあるかを数えるもの。1 だと 0、2 だと 1、0x80 なら 7、12 なら 2 といったぐあい。0 のときに表題どおりの問題として考えるといくつを返すの?ってことになるので、

    一番右端の立っているビット位置を求める「ものすごい」コード - 当面C#と.NETな記録
  • chaos2cosmos.net » Makefileの(おそらく正しい)書き方講座

    LinuxMacを使っていて,C++Texのコンパイルをするときにいちいち直接g++やplatexコマンドでコンパイルするのは効率が良いとはいえない.C++はリンクするライブラリを長ったらしく記述しなくてはいけないし,Texは2回コンパイルしなくては図表番号の索引が出来ないなどの煩わしい作業が伴うからだ. そこで,コンパイルの手順を記したMakefileを書こうという話になる.しかし,Makefileの記述方法は一歩間違うと,あまり作業が楽にはならない.ファイル間の依存関係をいちいち直接記述しなくてはいけないからだ.私の研究室の友達,後輩もこのMakefileの記述方法に四苦八苦している. この問題を解決する私なりのMakefileの一例を以下に示そう. C++ TARGET = name CXXFLAGS = -O2 -g -Wall LIBS = -lboost_thread -

  • googletest - Google C++ Testing Framework - Google Project Hosting

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    googletest - Google C++ Testing Framework - Google Project Hosting
  • Technical Report 2(TR2) - Faith and Brave - C++で遊ぼう

    BoostからTR2に提案されているもの。 Boost.Optional(N1878) Boost.LexicalCast(N1973) Boost.Filesystem(N1975) Boost.Any(N1939) Boost.DynamicBitset(N2050) Boost.StringAlgorithm(N2059) Boost.Signals(N2086) Boost.Asio(N2175)

    Technical Report 2(TR2) - Faith and Brave - C++で遊ぼう
  • memologue - C/C++の定数の型の話, C90/C99の差分のびみょーな話

    Cのソースコードに m = 195; とか n = 0xffffffff; とか書いたときの定数(右辺)の型って、なんであるかご存じでしょうか? また、C90(1990年版のISO C言語規格)とC99(1999年版のそれ)ではその型が微妙に異なったりすることがあるんですが、ご存じでしょうか? さらには、お使いのマシンがILP32であるかLP64であるかLLP64であるかによっても、微妙に型が違ってきたりするんですが、それについてはどうでしょうか? えーもちろん、普段は「Uがついてなかったらint, Uがついてたらunsigned intジャネーノ?」くらいの理解でも殆ど不自由しないわけですが、詳細な理解がないとハマるケースも稀にあります。 私はというと、上に書いたような事は、C90/99の差違を除いてはだいたい理解しているつもりだったのですが、C90/99の差異について無頓着だったがため

    memologue - C/C++の定数の型の話, C90/C99の差分のびみょーな話
  • Using SWIG to interface scripting languages with C/C++ LG #49

    "Linux Gazette...making Linux just a little more fun!" Introduction Scripting languages like Perl, Python and Tcl are receiving a lot of attention nowadays - mainly because these languages facilitate Rapid Application Development and Prototyping. It has been shown time and again that using a language like Python cuts down development time drastically - with the added advantage that you get highly

    niam
    niam 2009/05/28
  • plda - Google Code

    Code Archive Skip to content Google About Google Privacy Terms

    niam
    niam 2009/05/26
    並列化ってどうやったんだろう?Naiveには出来ないはずだけど。
  • C++クックブックのメモ - yasuhisa's blog

    5.4 vectorへのポインタの格納 vectorにはオブジェクトをコピーするのではなく、ポインタを格納する リファレンスは無理っぽい ポイントしているオブジェクトは自動的にdelteされることはないので、その削除を忘れないように 5.5 listへのオブジェクト格納 シーケンスの末尾や先頭以外でも変更するとしたらlistのほうがパフォーマンスや柔軟性がよい findしてポインタを持っておいて、そこの直前にinserとかそういうことも可能 remove_ifみたいな関数でfilteringすることもできる 7.11 クラステンプレートの作成 中身はともかく、treeのC++での実装が書いてあるのであとで試す

    C++クックブックのメモ - yasuhisa's blog
    niam
    niam 2009/05/24
  • yohei-y:weblog: CAPのCとACIDのC

    CAP 定理と BASE の概念を考えたのは UCB の Brewer 先生で、彼は inktomi の偉い人だったというのは前回述べた。 当時のinktomiはYahoo!Microsoft、それにgooにも検索エンジンを提供していて、1億以上のWebページ(テラバイト級のデータ)を扱っていたようだ。 手元のWEB+DB PRESS Vol.49 のはてなブックマークリニューアル記事によると、現在のはてなブックマークは1160万URLと100GBのHTMLデータ(圧縮済み)を扱っているらしいので、ざっくりいって98年の時点でinktomi は現在のはてブの10倍のデータを扱っていたといってもいい。inktomiで使っていたコンピュータの性能は現在のPCサ ーバに比べれば1/10程度の性能なので、システム全体でみると現在のはてブの100倍の規模になるだろうか。 結果的には、inktom

  • 関数ポインタを返す関数 - 素人がプログラミングを勉強していたブログ

    [09/04/21 23:17:19] qnighy/Acike: C言語で [09/04/21 23:17:31] qnighy/Acike: 関数ポインタを返す関数って [09/04/21 23:17:40] qnighy/Acike: どうやって宣言すればいいのかわからない [09/04/21 23:18:23] daiki chijiwa: っvoid * [09/04/21 23:18:38] qnighy/Acike: とりあえず、typedefとかvoid*とかはなしで [09/04/21 23:19:18] qnighy/Acike: 関数ポインタの型宣言を関数の戻り値にたいして行う書き方をしりたい [09/04/21 23:21:49] 糸柳: typedef 無しでできるのかな[09/04/21 23:29:22] つっくん(javascripter):int f()

    関数ポインタを返す関数 - 素人がプログラミングを勉強していたブログ
  • C++ のプログラムのデバッグを楽にする方法

    Google が公開しているソフトウェアの解説シリーズ(→その1 , その2)の続きです。今回は google-glog を使ってスタックトレースを表示する方法についてご紹介します。 C++ でプログラムを書いているとよく遭遇するのがセグメンテーション違反というエラーです。不正なアドレスへのアクセスなどによりセグメンテーション違反が起きると、通常、 UNIX 系の OS では SIGSEGV というシグナルによってプログラムが終了するとともに、 core というファイルが作られます。 core ファイルにはデバッガから参照できるいろいろな情報が残っていますが、多くの場合に役に立つのは、スタックトレースという情報です。スタックトレースを見れば、プログラムがどこでクラッシュしたのか、どのような関数を経由してそこにたどり着いたのかがわかります。プログラムがクラッシュした箇所を特定できれば、単純な

    C++ のプログラムのデバッグを楽にする方法
  • C++編(標準ライブラリ)●Programing Place

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • C++アプリケーションの効率的なテスト手法(CppUnit編) ― @IT

    第2回 C++アプリケーションの効率的なテスト手法(CppUnit編):連載 C++開発者のための単体テスト入門(1/4 ページ) 連載目次 前回は単体テストの重要性を示し、従来のC/C++でのテスト手法であるprintf関数やassertマクロを使ったテストを紹介しました。この2つのテスト手法は開発環境(コンパイラとライブラリ)さえあれば利用でき、その使い方も簡単です。しかしながら、いずれも系統立てて、効率よくテストを行うには力不足の感が否めません。 今回は、Visual C++ 2005 Express Editionを含むVisual Studio 2005(以後、VS 2005)で利用できる代表的な単体テスト・フレームワーク(Unit Test Framework)の1つである「CppUnit」を紹介します。 ■単体テスト・フレームワークとは? 前回、「バグは早期発見が望ましい。早

    C++アプリケーションの効率的なテスト手法(CppUnit編) ― @IT