タグ

c++とc++11に関するmoozのブックマーク (5)

  • try-and-back-off アルゴリズム - melpon日記 - HaskellもC++もまともに扱えないへたれのページ

    C++11 には、複数の Lockable なオブジェクトをロックしてくれる std::lock 関数があります。 template<class L1, class L2, class... L3> void lock(L1& m1, L2& m2, L3&... m3); この関数の最大の特徴は、決してデッドロックしないことです。 そして、このデッドロックしないという要件を満たすために使われるアルゴリズムが、try-and-back-off アルゴリズムと呼ばれるものです。 今回はこの try-and-back-off アルゴリズムについて説明します。 (この記事には独自解釈が含まれているので、間違ってる部分とかあれば指摘して頂けると嬉しいです) デッドロックの条件 デッドロックは、正確ではないですが、大まかに言って以下の条件を満たすと発生します。 ロックを取得するために待機を行なう あ

    try-and-back-off アルゴリズム - melpon日記 - HaskellもC++もまともに扱えないへたれのページ
    mooz
    mooz 2012/10/16
    std::lock の説明。複数のロックを任意の順序で取得する際にデッドロックを発生させない try-and-back-off
  • 頻度計数における unordered_map の調整(C++) - やた@はてな日記

    形態素の頻度をカウントするというシンプルなタスクで std::tr1::unordered_map の性能について実験してみました.std::string より const char * の方がメモリを節約できるというような軽い内容です. 実験概要 実験環境は以下のとおりです. 実験環境 CPU:Core 2 Duo U9600 1.60GHz コンパイラ:gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) 入力として使用したのは,ウェブコーパスから抽出した形態素を改行区切りで保存したファイルです. 入力 サイズ:815,793,701 bytes 形態素数:133,940,786 異なり数:516,612 形態素の入力については,std::ios::sync_with_stdio(false) を呼び出した後で std::getline() を使うようにし

    頻度計数における unordered_map の調整(C++) - やた@はてな日記
    mooz
    mooz 2012/06/29
    独自のハッシュ関数
  • GitHub - facebook/folly: An open-source C++ library developed and used at Facebook.

    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

    GitHub - facebook/folly: An open-source C++ library developed and used at Facebook.
    mooz
    mooz 2012/06/03
    Facebook による C++ ライブラリ
  • std::mapのoperator[]にconst版が提供されていない理由 - 梶本裕介の日記

    http://d.hatena.ne.jp/programer_hoshimi/20090202/1233593619T& operator[](const key_type& x);1 Returns: (*((insert(make_pair(x, T()))).first)).second.ISO/IEC 14882:2003 23.3.1.2規格を見るとわかるように,mapのoperator[]は渡されたキーに対して要素が存在しない場合新しい要素を追加することになっているのでconstに出来ないのであります.ちなみに次期規格では,要素が存在しない場合は例外を投げるメンバ関数atが追加される予定です.T& at(const key_type& x);const T& at(const key_type& x) const;7 Returns: A reference to the e

    mooz
    mooz 2012/01/09
    要素が存在しない場合は新しい要素が追加されるので const にできない.新しい要素は,デフォルトコンストラクタで作成される.要素が存在しない場合例外を投げる at() が追加予定.
  • 久々にC++使ったら進化してて素敵になってた件 – taichino.com

    最近、数年ぶりにC++を触っているのですが、いつの間にかかなり使いやすくなっていました。まだ全容は把握できてないのですが、とりあえず印象に残った以下の項目について書いてみたいと思います。 BOOST_FOREACHとautoですっきりループ tupleで無くなる無駄な構造体 #pragma onceで楽々インクルードガード std::functionとlamda関数でコンパクトなコード typeidでリフレクション 主にC++0x周りの話だと思っていますが、勘違いしている可能性も高いです。 前置きですが、エントリ内のコードはすべてgccの4.5.0で動作確認を行っています。(mac portのgcc45パッケージをインストールしました)。またビルド時にはc++0xの使用を明示する必要があります。 $ g++-mp-4.5 -std=c++0x main.cpp 1. BOOST_FORE

    mooz
    mooz 2011/05/23
  • 1