タグ

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

  • 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++ ライブラリ
  • Pengertian Simple Queues Dalam MikroTik

    Sesuai namanya, Simple Queues adalah salah satu fitur di dalam MikroTik yang sangat simple dan mudah digunakan dalam membagi Bandiwidth dengan beberapa konfigurasi sederhana. Simple Queues ini banyak digunakan karena sangat mudah digunakan karena hanya membutuhkan sebuah alamat ip dari client yang akan di limitasi bandwidthnya. Cara menggunakanya sangat gampang : ·         Buka Winbox dan klik tab

    Pengertian Simple Queues Dalam MikroTik
  • 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() が追加予定.
  • Elements of Modern C++ Style

    C++11 feels like a new language.” – Bjarne Stroustrup The C++11 standard offers many useful new features. This page focuses specifically and only on those features that make C++11 really feel like a new language compared to C++98, because: They change the styles and idioms you’ll use when writing C++ code, often including the way you’ll design C++ libraries. For example, you’ll see more smart poi

    Elements of Modern C++ Style
    mooz
    mooz 2011/11/06
  • C++11 - Wikipedia

    この記事は更新が必要とされています。 この記事には古い情報が掲載されています。編集の際に新しい情報を記事に反映させてください。反映後、このタグは除去してください。(2019年1月) C++11は、プログラミング言語 C++ のISO標準 ISO/IEC 14882:2011 の略称である。規格の策定中は2009年中の標準化を目指していたため、C++0x という仮称で呼ばれていた。 ISO/IEC 14882:2003 (C++03) に代わるものとして、2011年8月12日にISOによって承認された[4]。後継のC++14が2014年8月18日に承認されている。 コア言語への機能追加や標準C++ライブラリの拡張を施し、C++TR1ライブラリの大部分を(数学的特殊関数ライブラリを除いて)取り込んでいる。 C++ への修正はコア言語と標準ライブラリの双方に及ぶ。 委員会は、新規格の個別の要素の

    mooz
    mooz 2011/11/04
    NULL は C だと ((void*)0) か 0 のどちらでも良いが,C++ では 0 と定められている.これは C++ において void * が他のポインタ型へと暗黙的に変換されないため.
  • 本の虫: lambda 完全解説

    目的 この記事は、C++0xのlambdaを完全に解説せんとする目的を以て書かれた。サンプルコードは最小に留め、エラー処理等は省いた。この記事さえ読めば、今日からlambdaを恐れることなく使う物のC++0xプログラマになれるだろう。 lambdaとは何ぞや lambdaである。あるものは、lambda関数、あるいは無名関数という名称を使っている。いったいlambdaとは何なのか。 lambdaは関数である。また、特に名前はない。したがって、lambda関数、無名関数と呼ぶのは、間違ってはいない。しかしここでは、単にlambdaと呼ぶことにする。 lambdaを定義しよう lambdaは関数オブジェクトである。lambdaは関数オブジェクトである。これはとても大事なので二度書いた。lambdaは関数オブジェクト以外の何物でもない。ところが不思議なことに、皆lambdaが単なる関数オブジェ

    mooz
    mooz 2011/10/30
  • C++0x総復習

    13. §2.12 Keywords予約語が増えました。予約語一覧(橙色が新しい予約語)alignasalignof asm auto bool break case catch char char16_tchar32_t class const const_cast constexpr continue decltype default delete do double dynamic_cast else enum explicit export extern false float for friend goto if inline int long mutable namespace new noexceptnullptr operator private protected public register reinterpret_cast return short signed s

    C++0x総復習
    mooz
    mooz 2011/05/27
  • 久々に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
  • C++0xの言語拡張まとめ(※随時更新) - Faith and Brave - C++で遊ぼう

    C++0xの概要はこちら ・Angle bracket テンプレートの連続した山カッコの問題の解決 ・初期化子リスト ユーザー定義のクラスで配列のような初期化構文を実装可能になる ・Uniform initialization コンストラクタの構文と初期化子リストの構文が一様になる ・デリゲーティング・コンストラクタ コンストラクタから他のコンストラクタを呼び出せる ・auto 型推論 ・記憶クラス指定子としての auto の削除 autoキーワードの意味が変更になるため、下位互換がなくなる ・decltype sizeofの型版 ・Template Aliases テンプレートを使用して型の別名を付けることができる。いわゆるtemplate typedef ・拡張sizeof 構造体/クラスのメンバをインスタンス化せずにsizeofすることが可能になる ・nullptr ヌルポインタを表

    C++0xの言語拡張まとめ(※随時更新) - Faith and Brave - C++で遊ぼう
    mooz
    mooz 2011/05/12
  • Variadic Templatesの解説

    Variadic Templatesである。Variadic Templatesとは、そもそも何か。 Variadic functionというものがある。最も身近な例は、printfである。 int printf ( char const * format, ... ) ; printf( "number: %d, string: %s", 123, "hello" ) ; このように、任意の数の引数をとることができる関数を、Variadic functionという。 Variadic Templatesは、任意の数の、テンプレート引数を取れるテンプレートである。 これまで、型安全に任意の数の引数を取る方法はなかった。もちろん、関数はオーバーロードできる。 template < typename T1 > T f( T1 const & t1 ) ; template < typename

    mooz
    mooz 2011/05/04
    ... pack, unpack. pack されたパラメータのリストを再帰でたどる.
  • Vjeux » JSPP – Morph C++ Into Javascript

    C++ has a new standard called C++0x (Wikipedia, Bjarne Stroustrup) that includes many interesting features such as Lambda, For Each, List Initialization ... Those features are so powerful that they allow to write C++ as if it was Javascript. The goal of this project is to transform C++ into Javascript. We want to be able to copy & paste Javascript into C++ and be able to run it. While this is not

    mooz
    mooz 2011/04/25
    cpp0x の力を以てすれば JavaScript ライクな記法ができるぜ! という勇ましい試み
  • C++0xの新機能「ラムダ式」を次期Visual Studioでいち早く試す

    C++0Xの新機能が搭載されたVisual Studio 2010 Microsoftの開発者向け技術情報サイト「MSDN」では、Visual Studio 2010 β1 がリリースされています。IDEがWPFで作られていたり、.NET Frameworkのバージョンが上がっていたりと、Visual Studio 2010では様々な変更/拡張が施されているようですが、C++屋の筆者としては、Visual C++が部分的にせよC++の新規格(通称C++0X)の新しい機能を積極的に取り入れていることが、とても嬉しく思います。 Visual C++ ver. 10に追加されたC++0Xの新機能のひとつ、「ラムダ式(lambda expression)」を少しばかり触ってみましょう。 関数オブジェクトとは C++templateをサポートし、それにあわせてSTLに代表されるテンプレート・ライブ

    C++0xの新機能「ラムダ式」を次期Visual Studioでいち早く試す
    mooz
    mooz 2011/02/11
    std::function, lambda, キャプチャ
  • C++0x 標準ライブラリ完全解説 〜 No.02 std::move, - 野良C++erの雑記帳

    該当規格: 20.3.3 forward/move helpers [forward], N3225 http://sites.google.com/site/cpprefjp/reference/utility/move 少し間隔があいてしまいましたが、 C++0x 標準ライブラリ完全解説の二回目です。 前回の記事では、 C++98/03 の時点から変わらないライブラリを紹介しました。 今回からは、 のうち、 C++0x で追加された部分を取り扱っていきます。 つまり、ここからが C++0x でパワーアップした の領発揮。 その最初の回である今回は、 std::move という簡単な、しかし強力なヘルパ関数を紹介します。 これは、あるオブジェクトに対して、 「もうこのオブジェクトは使わないから、好きに扱っていいよ」 と明示する為の関数です。 定義 namespace std { tem

    C++0x 標準ライブラリ完全解説 〜 No.02 std::move, - 野良C++erの雑記帳
    mooz
    mooz 2011/02/04
    スタック上のオブジェクトの扱い.move することでコピーを防げる.
  • C++0xの新機能によってユーザーが受ける恩恵

    どうも執筆がはかどらないので、気分転換に、C++0xの新機能によって、一般ユーザーのコードがどのように便利になるかを示してみようと思う。 問題:以下のような仕様の関数printを実装し、また実際に呼び出しなさい。 宣言:関数printは、std::vector< std::string > const &を仮引数に取り、std::vector< std::string >::const_iteratorを戻り値の型として返す。 体:関数printは、仮引数のvectorの要素をすべて標準出力に出力する。 戻り値:v.cbegin()。 C++03の範囲(ただし、cbegin、cendあり)でこれを実装すると、以下のようになる。 std::vector< std::string >::const_iterator print( std::vector< std::string > cons

    mooz
    mooz 2011/01/17
  • 1