タグ

c++に関するgologo13のブックマーク (229)

  • ISO/IEC JTC1/SC22/WG21 - The C++ Standards Committee

    2024-02-16: standards | projects | papers | mailings | internals | meetings | contacts News 2024-02-15: The deadline for the 2024-04 mailing is 2024-04-16 16:30 UTC News 2024-02-15: The 2024-02 pre-Tokyo mailing is available (13000 kB tar.gz), individual papers News 2024-01-16: The 2024-01 mailing is available (4000 kB tar.gz), individual papers News 2023-12-22: The C++ Standard Core Issues List (

  • サークルの講座用(2011/5/9)

    kakan.cpp 'd}$V �$d}$V /* サークルの講座用に書いた何か. `もう/もう 何/なに も/も 怖/コワ く/く な/な い/い 。/。` という形式のコーパスを読み込んで仮名漢字変換っぽい何かをします. 未知語とか何も考えてない上にスムージングのパラメータも適当でこれはひどい. 「EUCだから1文字2バイトだろ」とか決め打ちでこれはひどい. 全体的に富豪気味でこれはひどい. using namepsace std; もぐもぐ! gcc 4.4で動作確認. % echo "もうなにもこわくない" | nkf -e | ./a.out corpus/all | nkf -w => もう何も怖くない */ #include <iostream> #include <vector> #include <string> #include <fstream> #include <

    サークルの講座用(2011/5/9)
  • boost::randomの罠 - 城陽人の本棚

    今日は先生が午後から用事があったみたいで、ミーティングが朝の10時からに変更。結局あんま誰もネタがなかったから別に今週なしでもよかったよーな。そうそう中間発表が21日だそうで、パワポの準備とかせなあかんなぁ。発表10分やのに質問20分というありえない時間配分が素敵。隠しスライドいっぱい作っとくか? で、午後からは相変わらずコーディングの続き。乱数あたりをいじってたのでその考察。 乱数生成は特に理由がない限りメルセンヌツイスタ法を使うのが基。間違っても標準のrand()なんて使わないよーに。このアルゴリズムは今んとこ精度及び速度の点から最良と言われてる代物。わざわざ自分で作らなくてもboost::randomにboost::mt19937というメルセンヌツイスタ法の実装があるからこれを流用。残念ながらこいつはVC6ではコンパイルが通らないので、VC6とかその他古いコンパイラで使いたい場合は

    boost::randomの罠 - 城陽人の本棚
    gologo13
    gologo13 2011/05/29
    罠があるのか。
  • 本の虫: 確率分布の使い方

    C++0xのstd::randomには、様々な分布クラスが存在する。一体どうやって使い分ければいいのか。ここでは、ゲームにたとえて考えてみる。 もっとも簡単な分布は、一様分布(Uniform distributions)である。これは、a ≦ i ≦ b, の範囲の値iを、それぞれ等しい確率で返す分布である。 ゲームでいえば、サイコロやルーレットなどの実装に使えるだろう。 // 六面サイコロの実装 int main() { std::mt19937 rng ; // 一様分布 // 0から5までの数字を等しい確率で返す分布 std::uniform_int_distribution<> dice(0, 5) ; int a[6] = { } ; // 六面サイコロの出た目の回数を記録する配列 // 600回サイコロを振る for ( int i = 0 ; i != 600 ; ++i )

    gologo13
    gologo13 2011/05/29
    std::random!!!!
  • C FAQ 13

    13.1: どうすれば数を文字列に変換することができるか(atoiの反対)。関数 itoaというのは存在するのか。 A: なにも考えずにsprintf()を使え。(「sprintfはやりすぎだ。実行時 間とコード領域を無駄遣いする。」という声は無視すること。とにか く動くんだから。) 質問7.5の解答内の例を参照のこと。質問12.21も 参照のこと。 すぐわかるようにsprintf()を使えばlongや浮動小数点数も文字列に 変換することができる。 References: K&R1 Sec. 3.6 p. 60; K&R2 Sec. 3.6 p. 64. 13.2: なぜstrncpy()はコピー先の文字列に、終端文字の'\0'を付けないこ とがあるのか。 A: 元々はstrncpy()は、今となっては時代遅れになってしまったデータ 構造、すなわち固定長で必ずしも\0で終わるとは限らない"

  • 擬似乱数生成器:メルセンヌ・ツイスタの使い方

    擬似乱数生成器とは? コンピュータを用いて、確率過程が入るシミュレーションを行う場合、決められた範囲の数がランダムに出現する乱数が必須となります。 しかしながら、コンピュータをもちいて乱数を発生させる場合、決定論的な計算から一見ランダムなものを擬似的に生成することしかできません。つまり、乱数の良さがシミュレーションの結果を左右することになります。 コンピュータなどを用いて生成する乱数は擬似乱数と呼ばれます。 また、擬似乱数を生成する器械は擬似乱数生成器、それに用いられているアルゴリズムは擬似乱数生成法と呼ばれます。 よい擬似乱数を得るためには、当然よい擬似乱数生成法が必要となります。 コンピュータを用いて擬似乱数を生成する場合、よい乱数の条件は「周期が長い」ことがあげられます。 コンピュータ特有の有限桁精度のため、生成する擬似乱数に周期性が存在します。 もし、擬似乱数を用いる回数がその周期

  • C/C++ リファレンス

  • C++を鍛え直す - nokunoの日記

    関数全体をtryで囲む int main() try { // 関数内のすべての例外をキャッチできる ... } catch () { ... } 無名名前空間C言語ではグローバル変数にstaticを付けるとファイル内変数になりましたが、C++では無名名前空間を使うことで同じ事を明示的に書くことができます。 namespace { // この中の変数は他のファイルから参照できない int i; } newのバリエーションデフォルトのnew演算子はメモリ確保に失敗するとstd::bad_alloc型の例外を投げるようになっていますが、std::nothrowを使うとNULLを返すようにできます。これは便利! int* p = new(std::nothrow) int; delete p; ※Effective C++によると、nothrow型のnewはメモリ確保に失敗しても例外を投げないも

    gologo13
    gologo13 2011/05/14
    tipsが載ってる感じ。
  • サービス終了のお知らせ

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

    gologo13
    gologo13 2011/04/28
    知らんかった。→変数strはローカル変数ですから、getstring関数が終了した時点で、メモリ上から消えてなくなってしまいます。
  • Multinomial DPMを実装してみた - yasuhisa's blog

    ちょっと前に実装してたんだけど、メモを書くがてら公開してみる。やりたいこととしてはnested Chinse Restaurant Processまで行きたいんだけど、ノンパラベイズ初心者なので一番取りかかりやすいであろうDirichlet Process Mixture(DPM)を文書モデルでやってみたという感じです。HDPではなくDPMとしてコーパスをモデル化するので、いくつ文書があろうがそれらは全部一つの文書として取り扱います(というか、そういう形でしか取り扱えません。扱いたかったらHDPの世界へ行こう)。 目的 やってみようと思った理由はいくつかあって 実際に自分で把握できるミニマムな*1ノンパラベイズのプログラムをgetする 実際に書いてみることでノンパラベイズのプログラムではまりやすいところを知る コード書く段階までやってみないと分かったつもりになっていることが多い などなどで

  • clangでソフトウェアをビルドしC++を知る - 射撃しつつ前転 改

    clangというのはllvm向けのC/C++/Obj-Cのためのフロントエンドで、最近はGoogle ChromeとかFirefoxもコンパイルできるレベルにまで成熟してきているらしい。 いくつかのブログで紹介されているのを見ても、ふーん、ぐらいにしか思っていなかったのだが、あんな大規模なソフトウェアがコンパイルできるというのは、考えてみるとすごいことである。大事なことなので強調しておくが、すごいことである。十分に実用的なレベルに到達していることだ。ビルドも早いし生成されたコードもg++と同程度には速いというし、試してみる必要がある。 という訳で、いくつか実際にソフトウェアをビルドしてみた。試してみた限りでは、 libstdc++のtr1/unordered_mapがビルドできない C++のコーナーケースで、clangが許容しないものが多い といった問題があったが、割とどれもすんなりとコン

    clangでソフトウェアをビルドしC++を知る - 射撃しつつ前転 改
  • Boost.Localeがクソすぎる

    Boost.Localeがレビューされているので見てみたが、クソすぎる。しかも、作者はそれが糞であることに気がついていない。 Boost.Locale: Boost.Locale Boost.Localeはstd::localeの機能を持っている。しかし、日人なら誰でも知るように、std::localeはクソの役にも立たない。よって、Boost.Localeも、その機能としては役立たずだ。 Boost.Locale: CollationとBoost.Locale: Conversionsでは、大文字、小文字、アクセント記号の有無に対する無視や、相互変換などの機能を提供している。これは、日語には何の役にも立たない機能である。 Boost.Locale: Numbers, Time and Currency formatting and parsing これは、数値や日付、貨幣単位に対する

    gologo13
    gologo13 2011/04/19
  • MPI – Xerial – Trac

    Parallel and Distributed Programming (MPI Programming) written by Taro L. Saito Lecture Page (2006): http://www.logos.ic.i.u-tokyo.ac.jp/~tau/lecture/parallel_distributed/2006/ My presentation slides (PDF) C++ Source Codes Subversion repository: http://www.xerial.org/svn/project/sandbox/trunk/pdp username: anonymous, pass: (empty) To build & run these codes, you require Boost C++ Library and ANTLR

  • Big Sky :: ヘッダファイルだけでC++から使えるJSONパーサ「picojson」が凄い!

    kazuhoさんがやってくれました。 ずいぶん前からjsonをC++でパース(SAXじゃなくてDOM)するのに小さいライブラリないかなーと思ってました。個人的にはjson-cというのを使ってたのですが、幾らか気に入らない所があったりビルドが少し手間だったりしていました。STLしか使わなくてvectorとかmapで表現されるツリー構造な物が欲しいなぁって思ってたんです。 とあるIRCで昨日、kazuhoさんと「ほしいですよねー」という話から始まって、githubにあるjsonxxとかも物色しながら「いいのないねー」とか言ってたらkazuhoさんが「もすこし綺麗に書けそう」って言い出して朝から格的に書き始めてついさっき出来上がりました。速いw 名前はpicojson とても小さく、実装コードだと300数十ステップ程です。しかもヘッダファイルだけなので管理が楽です。 試しにwassrのpubl

    Big Sky :: ヘッダファイルだけでC++から使えるJSONパーサ「picojson」が凄い!
  • Kazuho@Cybozu Labs: 今更 C++ で JSON パーサ「picojson」を書いたわけ

    既に mattn さんが、「Big Sky :: ヘッダファイルだけでC++から使えるJSONパーサ「picojson」が凄い!」で紹介してくださっています (mattn さん、アドバイス&バグ情報ありがとうございます!) が、いまさら C++ で JSON パーサを作りました。それは、以下の3点を満たすものがなかったから。 ヘッダファイル only boost 等、他の重たいライブラリに依存しない array や object が STL にマッピングされる コードは、coderepos に置いてありますので、よろしければお使いください (picojson.h)。 なお、現時点での制限事項として、 \n や \r, \uXXXX といったエスケープの処理が未実装rev. 34232 で対応しました (含サロゲートペア) 空白文字の判断基準が RFC と異なるrev. 34277 で空白と

  • ベルマンフォード法 - nokunoの日記

    アリより。グラフの最短経路を求めるベルマンフォード法の実装を行いました。 #include #define MAX_E 20 #define MAX_V 7 #define INF 100000 struct edge {int from, to, cost; }; edge es[MAX_E] = { {0, 1, 2}, {0, 2, 5}, {1, 2, 4}, {1, 3, 6}, {1, 4, 10}, {2, 3, 2}, {3, 5, 1}, {4, 5, 3}, {4, 6, 5}, {5, 6, 9}, {1, 0, 2}, {2, 0, 5}, {2, 1, 4}, {3, 1, 6}, {4, 1, 10}, {3, 2, 2}, {5, 3, 1}, {5, 4, 3}, {6, 4, 5}, {6, 5, 9}, }; int d[MAX_V]; void s

  • A*アルゴリズムについて整理 - yasuhisa's blog

    辞書を参考にしながら。NAISTのI期辺りでやったはずなんだが、かなりすっ飛んでいる。 デジタル人工知能学事典 [CD-ROM付] 作者: 人工知能学会出版社/メーカー: 共立出版発売日: 2008/05/16メディア: 単行購入: 1人 クリック: 6回この商品を含むブログ (6件) を見る A*アルゴリズムとは?グラフ探索アルゴリズムの一つ。「開始ノードから現在位置に至るまでのコスト」と「現在位置からゴールまでの推定コスト」の2つのコストを用いてadmissibleな条件(後述)の元でコストが最小であるような経路を効率的に見つけることができるアルゴリズムである。1960年代に開発されたアルゴリズムであるが、50年経った今でもばしばし使われている。 現在いるノードをp、開始ノードからpまでの最小コストをg(p)、pからゴールまでの最小コストをh(p)と書くとすればpを経由して開始ノード

    A*アルゴリズムについて整理 - yasuhisa's blog
  • C/C++のお勉強のためquickrun.vim入れたら学習速度が倍になった(かもしれない) - 今日もスミマセン。

    quickrun.vimvimで編集中のコードをその場でインタプリタで実行したり、コンパイル&実行してくれる超便利なvimプラグイン。 githubから開発版をクローンした $ git clone git://github.com/thinca/vim-quickrun.gitでディレクトリを移動して rake link_installでインストール(実際はln -sでシンボリックリンクを張っているだけなので、git pull するだけでプラグインを最新化できる!) これだけでインストール完了。 使ってみる。まずvimを起動して、以下のようにrubyスクリプトを書いて\rと叩く。すると、ファイル名(拡張子)を見て quickrun.vim がそれに適したインタプリタあるいはコンパイラを選択し、必要ならコンパイルし実行してその結果を別ウィンドウに出力してくれる。 :e でバッファに直接書

    C/C++のお勉強のためquickrun.vim入れたら学習速度が倍になった(かもしれない) - 今日もスミマセン。
  • C++ のプログラムのデバッグを楽にする方法

    メディア関係者向けお問い合わせ先 メールでのお問い合わせ: pr-jp@google.com メディア関係者以外からのお問い合わせにはお答えいたしかねます。 その他すべてのお問い合わせにつきましては、ヘルプセンターをご覧ください。

    C++ のプログラムのデバッグを楽にする方法
    gologo13
    gologo13 2011/03/21
    google-glog スタックトレース。すごく便利そう。この記事自体も勉強になる。
  • Protocol Buffer Basics: C++

    A basic C++ programmers introduction to working with protocol buffers. This tutorial provides a basic C++ programmers introduction to working with protocol buffers. By walking through creating a simple example application, it shows you how to Define message formats in a .proto file.Use the protocol buffer compiler.Use the C++ protocol buffer API to write and read messages.This isn’t a comprehensiv