タグ

C++11に関するMonMonMonのブックマーク (66)

  • GitHub - dropbox/json11: A tiny JSON library for C++11.

    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 - dropbox/json11: A tiny JSON library for C++11.
    MonMonMon
    MonMonMon 2018/01/25
    “A tiny JSON library for C++11.”
  • SonyのDNNフレームワーク"NNabla"を調べてみた - tkato’s blog

    SonyがNNablaというDeepLearningフレームワークを公開しました*1。 興味があったので、ドキュメントとソースを読みながら、全体を眺めてみました。 よく見ると標準でBinaryConnectのサポートやBinary Neural Network(BNN)のサンプルがあったり、興味深いです。 NNablaのコンセプト 公式サイトに記載のあるコア・コンセプトのようなもの https://nnabla.org/ Write less do more コードを直感的に短く書ける Dynamic computation graph support ChainerやPytorchのような動的なモデル構築 Run anywhere 色々なプラットフォームで動くように開発 Device ready ライブラリのコアはC++11で書かれているので、組み込み機器にも乗せられる Easy to

    SonyのDNNフレームワーク"NNabla"を調べてみた - tkato’s blog
  • C++のムーブと完全転送を知る - Fixstars Tech Blog /proc/cpuinfo

    社内勉強会、今期(と言ってももうあと1ヶ月もないですが)は、数理最適化勉強会と、Effective Modern C++輪読会をしています。この記事は、後者のEffective Modern C++輪読会で、『Effective Modern C++』5章の一部を輪読した時の資料を流用したものです。 C++11と言えば、昔のC++(03)から色々あって多くの機能が追加されとても便利になったバージョンです。さらに、C++14は11では間に合わなかった・忘れていた色々な便利なものを補填したもので、Effective Modern C++輪読会は、『Effective Modern C++』を教科書にしながらこのC++11/14について学ぶ会になっています。 時は既に2016年、gccもclangもMSVC++も概ねC++14が使えるようになっており、もはやC++14が使えないコンパイラにはC+

    C++のムーブと完全転送を知る - Fixstars Tech Blog /proc/cpuinfo
  • #Anthony Calandra / モダンC++の機能 | POSTD

    (注:2017/10/25、いただいたフィードバックを元に翻訳を修正いたしました。修正内容については、 こちら を参照ください。) (注:2017/02/07、タグが誤っていたので修正いたしました。) C++11/14/17 概要 C++11/14/17に関する記述や例の多くは、様々なリソース(詳しくは謝辞の項目をご覧ください)を参考にしており、それらを自分の言葉でまとめてみました。 C++17には、以下の新しい言語機能が導入されています。 クラステンプレートに対するテンプレート引数の推論 autoによる非型テンプレートパラメータの宣言 フォールド式 かっこ付き初期化リストを持つauto推論の新しい規則 constexprラムダ インライン変数 入れ子になった名前空間 構造化されたバインディング 初期化子によるステートメントの選択 constexpr if C++17には、以下の新しいライ

    #Anthony Calandra / モダンC++の機能 | POSTD
  • How can I use std::chrono::duration as a template parameter?

  • Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines

    Boost.勉強会#19東京 Effective Modern C++C++ Core Guidelines

    Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
  • C++11スマートポインタで避けるべき過ち Top10 | POSTD

    (注:2017/10/25、いただいたフィードバックを元に翻訳を修正いたしました。修正内容については、 こちら を参照ください。) 私は新しいC++11のスマートポインタをとても気に入っています。自分でメモリを管理するのが嫌だと感じる多くの仲間たちにとって、これはいろいろな面で天の助けでした。私の場合、このおかげで新人にC++を教えるのがずっと楽になりました。 しかし、C++11のスマートポインタを幅広く使っていた2年ちょっとの間で、使い方を誤ると、プログラムの効率が落ちたりクラッシュして壊れたりするという事態に何度も遭遇しました。参照用に、以下に例を載せました。 まずはこれらの”過ち”を、簡単なAircraftクラスを例に取って見てみましょう。 class Aircraft { private: string m_model; public: int m_flyCount; weak_p

    C++11スマートポインタで避けるべき過ち Top10 | POSTD
  • C++17, C++14, C++11 に併せた std::shared_mutex, std::shared_timed_mutex, std::mutex から mutex_type, read_lock_type, write_lock_type を扱う例 - Qiita

    C++17, C++14, C++11 に併せた std::shared_mutex, std::shared_timed_mutex, std::mutex から mutex_type, read_lock_type, write_lock_type を扱う例C++C++11C++14C++17mutex 概要 C++11 から標準ライブラリーに入った std::mutex から C++14 では std::shared_timed_mutexC++17(予定)では std::shared_mutex が追加される事で、 READ アクセス向けと WRITE アクセス向けにロックレベルを制御できるようになりました。 そこで、翻訳環境の C++ 規格の対応に応じて READ / WRITE 向けのロックを使い分ける簡単なコード例を示したいと思います。 #pragma once #if

    C++17, C++14, C++11 に併せた std::shared_mutex, std::shared_timed_mutex, std::mutex から mutex_type, read_lock_type, write_lock_type を扱う例 - Qiita
  • 委譲コンストラクタ [N1986] - cpprefjp C++日本語リファレンス

    このページはC++11に採用された言語機能の変更を解説しています。 のちのC++規格でさらに変更される場合があるため関連項目を参照してください。 概要 「委譲コンストラクタ (delegating constructors)」は、コンストラクタから、同じクラスの他のコンストラクタに処理を委譲する機能である。 class X { int i_; public: X(int i) : i_(i) {} // (1) : int型のパラメータを受け取るコンストラクタ X() : X(42) {} // (2) : デフォルトコンストラクタ。 // (1)のコンストラクタに初期値を渡して初期化処理を委譲する }; (2)のコンストラクタでの、X(42)の部分が委譲コンストラクタに当たる。(2)のコンストラクタから(1)のコンストラクタを呼び出し、初期化処理を(1)のコンストラクタに集約している。

  • C++11のスレッド、アフィニティ、ハイパースレッディング | POSTD

    背景と導入 何十年もの間、CやC++の標準規格は、マルチスレッディングや並行処理を「その標準の範囲を超えたもの」として扱ってきました。標準規格の目的である”抽象機械”の力が及ばない、”対象依存”という影の世界においてです。メーリングリストやニュースグループの質問には並行処理に関するものが山ほど寄せられましたが、それらにすぐに突き返された回答は「C++はスレッドには関知しません」という何とも冷淡なものでした。この件によって当時のことを思い出す人々は、今後も絶えないでしょう。 しかしC++11の登場で、そんな状況に終止符が打たれたのです。C++標準化委員会は、時代の流れに乗らないと、この先C言語が取り残されてしまうと悟ったのでしょう。彼らはスレッドや同期メカニズム、アトミック操作、メモリモデルなどの存在に、ようやく気付いたわけです。そして標準規格として、C++コンパイラやライブラリのベンダーに

    C++11のスレッド、アフィニティ、ハイパースレッディング | POSTD
  • clang/gccに組み込まれたAddressSanitizer/LeakSanitizerでメモリエラーを捕捉する - 千里霧中

    C/C++でのユニットテストによるメモリリーク検出 - 千里霧中の補足。 メモリエラーの検出方法についてだけれど、最近のclangやgccだと、AddressSanitizerという動的解析ツールが組み込まれており、それを活用できる。 使用する場合はコンパイラオプション「-fsanitize=address」「-fsanitize=leak」等を指定する。 題材 例えば以下のコードを対象にする。 //main.c #include <stdio.h> #include <stdlib.h> void hoge(void) { int *a_buff = (int *)malloc(5 * sizeof(int)); a_buff[10] = 8; } int main(void) { printf("test\n"); hoge(); return 0; } これを普通にコンパイルして実行

    clang/gccに組み込まれたAddressSanitizer/LeakSanitizerでメモリエラーを捕捉する - 千里霧中
    MonMonMon
    MonMonMon 2016/02/03
    メモリリーク、メモリ破壊の検出ツール
  • C++11でバリア同期 - Qiita

    動機 C++11でカジュアルにスレッドが作れるようになったのに、そのバリア同期手段はboost::barrierかpthread_barrierぐらいしか使えなくてもっと依存のないポータブルな実装が欲しい事があったので書き捨てたものを公開。 condition_variableとnotify_allを使った物が一般的だけれど、短時間で同期できることがわかっている場合にはスピンによる待機が一番パフォーマンスが出るのでスピンにした。 実装 The Art of Multiprocessor Programmingのセンス反転バリアをそのまま実装した。 スレッドローカルストレージをクラスごとにポータブルに作る方法が分からなかったし、そもそもスレッドは開始時にTIDを渡しているのでそれをwait()の引数に渡すようにした。 やりたい事はbooleanの反転だったけれどstd::vector<boo

    C++11でバリア同期 - Qiita
  • GitHub - herumi/emcjp

    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 - herumi/emcjp
  • C99からC++14を駆け抜けるC++講座 - Qiita

    C++初心者Advent Calendar 2015 この記事はC++初心者Advent Calendar 2015 17日目の記事です <<9日目 |Clang with Microsoft CodeGenがでたので試す <<16日目 | ブログズミ: Boost.Test v3 を使ってみた || 18日目 | それC++なら#defineじゃなくてもできるよ | とさいぬの隠し部屋 >> はじめに みなさま、ナマステ。さて、この記事のタイトルを見て、「時代・・・サトウキビ・・・忍者・・・うぅ、頭が」となった人は私と趣味が似ています・・・って話はどうでもいいか。 よく、「C++はBetter Cとしてはじめればいい」みたいな話を聞くのでそれにそって一気にC++14まで駆け抜けようと思います。 ちなみにC99を知らない人はお断りです。さようなら。 でははじめますか。 しっかし書き終わって

    C99からC++14を駆け抜けるC++講座 - Qiita
  • const rvalue referenceは何に使えばいいのか - ここは匣

    What are const rvalue references good for? を適当に訳したものです。(微妙な表現や、誤訳があるかもしれません。変なところは原文と照らしあわせてお願いします。) あまり使われることのないconst rvalue referenceの使用について触れている記事です。 あなたはこれまでconst rvalue reference (const T&&)を使用した実用的なコードを見たことがないかもしれない。それは特に驚くようなことではない。rvalue referenceの主な目的が、コピーの代わりにオブジェクトをムーブする為であるからだ。そして、オブジェクトの状態をムーブする事は変更を意味する。結果として、ムーブコンストラクタとムーブ代入演算子両者の関数の標準のシグネチャは、その引数としてnon-const rvalue referenceを取る。 しか

    const rvalue referenceは何に使えばいいのか - ここは匣
  • 【初心者 C++er Advent Calendar 2015 1日目】初心者が C++ を勉強するときに最低限押さえておいたほうがよい C++11/14 の機能 - Secret Garden(Instrumental)

    この記事は初心者 C++er Advent Calendar 2015の1日目の記事になります。 アドベントカレンダーはまだ空きがあるので気になる方は参加してみるとよいと思います。 さて、最近だと C++11/14 で書かれているも増えてきたんですが、やっぱり昔の入門書だとどうしても C++03 が中心になってしまっていてちょっとつらいんですよねー。 と、いうわけで『これから C++ をはじめてみたい!』という人に知っておいてほしい(抑えておいてほしい)C++11/14 の言語機能をちょっとまとめてみました。 C++11/14 を始める前に C++ ではコンパイラやバージョンによって実装されている C++11/14 の機能がまちまちです。 そのため、今回紹介した機能が手元の環境では動作しない可能性もあります。 単に機能を試すだけであれはオンラインコンパイラのWandboxで試してみると

    【初心者 C++er Advent Calendar 2015 1日目】初心者が C++ を勉強するときに最低限押さえておいたほうがよい C++11/14 の機能 - Secret Garden(Instrumental)
  • C++でメンバ関数をコールバックする - code snippets

    C++11以前 C++11がなかったころ,functionalヘッダのmem_fun_tとmem_fun1_tを使う方法があった。 mem_fun_t…引数のないメンバ関数 mem_fun1_t…引数が1つのメンバ関数 が可能だった。つまり、引数が2個以上のメンバ関数は、面倒くさい手続きをしない限りできないということ。 たとえば、引数を1つの構造体にまとめるとか。 解決策としてかつてはboost::mem_fnが使われていた。 現在はC++11の標準機能でmem_fnがあるので必要ない。 OpenGLのコールバック関数としてメンバ関数を登録できる?? 試みたけど、できなかった でも、GLFWを使えば、ウィンドウに自分の好きなポインタを入れておくことができるので、 OpenGLとオブジェクト指向の両立が可能です。

  • ソートアルゴリズム高速化への道 - kivantium活動日記

    先日、アルゴリズムの授業でソートのアルゴリズムをいくつか習いました。ソートアルゴリズムの名前と原理くらいは聞いたことがありましたが、実装したことはなかったのでいい機会だと思い実装してみることにしてみました。ただ実装するだけでは面白くないので高速化の限界に挑戦してみたいと思います。 計測用プログラム 今回の計測では、ランダム値が入った配列のソートを100回行い、平均時間を各アルゴリズムに競わせるというシンプルなルールにしました。プログラムは以下の通りです。 C++11で入ったメルセンヌ・ツイスタなどの機能を使っているので、ビルド時には-std=c++11を指定する必要があります。 実験に使用したパソコンのCPUはCore i3-3227U@1.90GHz、コンパイラはgcc version 4.8.4で最適化オプションには-O3を指定しました。 #include <iostream> #in

    ソートアルゴリズム高速化への道 - kivantium活動日記
  • 「unique_ptrにポインタ以外のものを持たせるとき」で話したことと話さなかったこと - クリアボックス

    歌舞伎座.tech#8「C++初心者会」で「unique_ptrにポインタ以外のものを持たせるとき」というタイトルで発表したが、この記事ではそのまとめと、追加の話題について述べる。 発表資料はここにある。 TL;DR std::unique_ptrはハンドルがポインタライクな型のリソースでしか使用できない。それに対して、C++標準委員会のペーパーN4189で提案されているunique_resourceを使えば、ポインタ以外のハンドルで扱われ、排他的に所有されるリソースを自動管理できる。 実際に使用できるunique_resourceの実装はここにある。 unique_resourceは普通、カスタムデリータを設定して使用するが、デリータオブジェクトのコピーと実行が強い保証を満たしていない場合は例外安全性を担保するのが困難、もしくはほぼ不可能である。 デリータ型がムーブ代入不可能の場合(ラム

    「unique_ptrにポインタ以外のものを持たせるとき」で話したことと話さなかったこと - クリアボックス
  • Improvement future api