タグ

C++11に関するrydotのブックマーク (31)

  • スレッドセーフという幻想と現実 - yohhoyの日記(別館)

    この記事はC++ Advent Calendar 2013の15日目にエントリしています。 内容はC++標準ライブラリとスレッドセーフに関する解説になります。 flickr / rennasverden もくじ What's スレッドセーフ? スレッドセーフという幻想 基型とデータ競合 C++標準ライブラリとデータ競合 C++標準ライブラリ:シーケンスコンテナ編 C++標準ライブラリ:連想コンテナ編 スレッドセーフ RELOADED 基的なスレッドセーフ保証 std::shared_ptr<T> std::rand() std::cout (文のみ約9000字) はじめに マルチスレッド対応の点では他言語に遅れを取っていたプログラミング言語C++ですが、C++11ではようやく標準ライブラリにスレッドサポートが追加されました。C++11スレッドサポートではスレッドクラスstd::thr

    スレッドセーフという幻想と現実 - yohhoyの日記(別館)
  • shared_ptrとweak_ptrの使い分けわかる? - Qiita

    はじめに 当に怖いC++erとC++という糞言語 で「スマートポインタ(弱参照)に対する知識が無いC++erは嫌だ」と言われてしまったので、勉強することにした。 リソース管理 プログラムにおけるリソースとは、メモリやファイルなど、OSによって管理されているものを指す。C++では確保したリソースを解放する責任はプログラマが負っているため、解放忘れなどのミスによってリソースリークが起こり、デバッグに数時間/数日間苦しめられる場合もある。つまりC++を使う場合は、 確保したリソースは必ず一度だけ解放しなくてはならない という法則を肝に銘じてプログラミングを行う必要がある。 スマートポインタ 「確保したリソースをプログラマが忘れずに必ず一度だけ解放する必要がある」と言ったものの、これをプログラマが 常にミスすること無く 行うことは非常に難しく、できることならJavaやC#の様にリソース管理を言語

    shared_ptrとweak_ptrの使い分けわかる? - Qiita
  • 高速なハッシュテーブルを設計する | POSTD

    (訳注:2016/9/28、頂きましたフィードバックを元に記事を修正いたしました。) はじめに 稿では、高速で汎用的なハッシュテーブルを作るために行う、設計についての多くの意思決定事項を紹介します。最終的に、私の emilib::HashSet とC++11の std::unordered_set の間のベンチマークが出来上がりました。もし、ハッシュテーブルに興味があって、自分で設計したいなら(どのプログラミング言語かに関わらず)、稿がヒントになるかもしれません。 ハッシュテーブル は、素晴らしい発明です。 ならし計算量O(1) ( O(√N)時間 )で、挿入、削除、検索を行うことができます。ならし計算量とは、ハッシュテーブルの計算に平均でO(1)の計算量がかかることを意味しますが、時々、これよりも多くの時間がかかる場合があります。具体的には、ハッシュテーブルに空きがない場合で、挿入の

    高速なハッシュテーブルを設計する | POSTD
  • C++のcerealのシリアライズが快適すぎるやばい - Qiita

    cerealって? cerealとは、C++11用のjson, xml, binaryシリアライズライブラリです。似たようなものにboost::serializationや、googleのprotocol buffersなどがあります(ほかにもまだありそうですが)。 ではなぜcerealなのか? cerealには他の二つにはない利点として、 ヘッダーオンリー ライブラリが小規模 というのがあります。 この性質は移植作業を大変楽にしてくれます。 というのも自分、boost::serializationをしばらく使っていたのですが、iOSでも使おうとしてビルドで問題がおきて、もっと良いシリアライズライブラリがないものかと探した経緯があります。 シリアライズしたいケースとして、異なるプラットフォーム同士で通信するプログラムを作りたいケースがありますので、この性質は大いに作業を楽にしてくれます。

    C++のcerealのシリアライズが快適すぎるやばい - Qiita
  • 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
  • Boost.老害

    I @wx257osn2 何回か話に出してるけどC++0x策定前後にC++格的に始めたせいでかなりスムーズにC++11に馴染んだけど、scoped_ptrとか諸々は標準ライブラリに入ってるのが当たり前になっててあんまりBoostのお世話になってないから個人的にBoostすごいっって感覚があんまりない 2013-02-14 00:29:42

    Boost.老害
  • Which C++ idioms are deprecated in C++11?

    With the new standard, there are new ways of doing things, and many are nicer than the old ways, but the old way is still fine. It's also clear that the new standard doesn't officially deprecate very much, for backward compatibility reasons. So the question that remains is: What old ways of coding are definitely inferior to C++11 styles, and what can we now do instead? In answering this, you may s

    Which C++ idioms are deprecated in C++11?
  • More C++11

    FDIS(N3290) をベースにしたC++0xの総復習です。 Boost.勉強会 #5 名古屋 ( http://partake.in/events/b9463b89-0a08-4996-9843-f52252ed2dcf )にて発表。

    More C++11
  • C++11スマートポインタ入門 - Qiita

    [2022-06-22] さすがに情報が古くなってきたため、最新の規格に合わせて記事の内容を再編集した記事を新たに書きました。よろしければ、こちらの新記事「C++20スマートポインタ入門」をご参照ください。 C++11では、unique_ptr<T> shared_ptr<T> weak_ptr<T>の3種のスマートポインタが新たに追加された。これらのスマートポインタは、いずれもメモリの動的確保の利用の際に生じる多くの危険性を低減する目的で使用されるが、それぞれ独自の考え方と機能を持っている。3種のスマートポインタを適切に使い分けることで、安全性と開発速度の向上が見込めるだけでなく、プログラマの意図に合わせて「ポインタ」を記述し分けることができる、非常に強力なツールとなる。 解説では、スマートポインタについて初めて学ぶ人を対象に、C++11で追加された3種のスマートポインタの機能と使い

    C++11スマートポインタ入門 - Qiita
    rydot
    rydot 2015/05/17
  • 日経ソフトウエア5月号 「constexpr」が開くコンパイル時プログラミングの世界 - ボレロ村上 - ENiyGmaA Code

    中3女子です。 だいぶ間が空いたが、日経ソフトウエア5月号の特集記事として 僕の書いた 「constexpr」が開くコンパイル時プログラミングの世界 が掲載されたことを報告する。 「プログラムは実行時にだけ処理が行われるもの」。 そう思い込んでいませんか。それは大きな誤解です。 最新のC++コンパイラを使えば、プログラムを実行する前のコンパイル時に処理を完了できるのです。 それを可能にするC++の機能が「constexpr」です。 特集では、constexprの魅力を紹介します。 日経ソフトウエア Amazon.co.jp: 日経ソフトウエア 2014年 05月号: 日経ソフトウエア: constexprの紹介記事だが、入門から実装技法、Sproutライブラリの紹介からコンパイル時レイトレーシングまで、きわめて幅広い範囲を網羅している。 この内容を8ページ(見開き4ページ)に圧縮する

    日経ソフトウエア5月号 「constexpr」が開くコンパイル時プログラミングの世界 - ボレロ村上 - ENiyGmaA Code
  • C++11 FAQ

    Modified August 19, 2016 This document is written by and maintained by Bjarne Stroustrup. Constructive comments, corrections, references, and suggestions are of course most welcome. Currently, I'm working to improve completeness and clean up the references. Translations: Russian. Chinese. Japanese. Korean I have contributed to the new, unified, isocpp.org C++ FAQ maintained by The C++ Foundation o

  • Maraigue風。:[C++11] std::functionとは

    2013年12月25日 [C++11] std::functionとは この記事を書いた理由 C++11において「std::function」というクラスが導入されました。これは後で詳しく述べますが、処理のまとまりを表すオブジェクトを格納できるクラスになります。 しかし、これを使い始めようと思ってstd::functionでぐぐっても、その意義や利用方法がちょうど良くまとまっている記事が見当たらなかったのです。 また、意義という意味ではstd::functionの大元であるboost::functionを読めばよいものの(記事例1・記事例2)、コード例が当然C++11ではなくBoost前提であるため、C++11前提で利用するには情報として物足りなく感じたのです。 そこで記事では、私が調べられた範囲でstd::functionの基的な部分を紹介します。 サンプルとして用いたソースコードは

  • C++14の言語拡張まとめ - Faith and Brave - C++で遊ぼう

    C++14は、C++11に対するマイナーアップデートです。仕様のバグ修正や、C++11の比較的小さめな機能不足を補うバージョンになっています。 細かすぎる変更はさすがに書きませんが、ある程度大きめの変更を以下にまとめます。 この内容は、正式に策定されるまでに変更される可能性があります。 コア言語 2進数リテラル 変数テンプレート 通常の関数の戻り値型を推論 ジェネリックラムダ 一般化されたラムダキャプチャ constexpr関数の制限緩和 どこからともなく現れる結果の規定(前半, 後半) [[deprecated]]属性 数値リテラルの桁区切り文字 サイズ付きのデアロケーション initializer-listによるaggregate初期化の制約緩和 ロックフリーの定義 シグナルハンドラでできることの制限緩和と明確化 ライブラリ make_unique() コンパイル時整数シーケンス tu

    C++14の言語拡張まとめ - Faith and Brave - C++で遊ぼう
  • 変化しなければならない

    この激動のような二週間を経て思ったことは、やはり、変化は必要なのだということだ。この数年、C++の参考書をだらだらと書くばかりで、まったく変化がなかった。怠惰はプログラマーの美徳だなどとうそぶきながら、何も変わっていなかったわけだ。 それが、引っ越しをしなければならなくなると急に決まった。引越しに伴い、今のコンピューターとインターネット接続も失うことになった。劇的な変化だ。 まず行ったのは、C++参考書のGitHubでの公開だ。とにかく、未完成だが公開しなければならない。このまま埋もれさせるわけには行かない。もちろん、GFDLのような自由を保証するコピーレフトなライセンスで公開するのだ。私が無きあとも、自由に使えるように意思表示しておかなければならない。 当初は、公開して、そのまま消えるつもりだったが、多くの誤字脱字の修正がpull requestで送られてきた。そのため、にわかにやる気を

  • rvalue reference

    歌舞伎座.tech #2

    rvalue reference
  • C++11 時代のクラス設計に関する提案 - 野良C++erの雑記帳

    先日,ついに C++11 の主要な機能を一通り実装した GCC-4.8.1 がリリースされた. もう一方の主要な C++ コンパイラである Clang++ でも C++11 の機能は既に全て実装されており, 来る 6/05 に最新版の Clang-3.3 がリリースされ, C++11 対応が完了する見通しだ.*1 このような状況においては, C++11 への乗り換えを検討し始めているプロジェクトも多いことだろう. さて, C++11 では, C++98/03 との互換性を保ちつつ,クラス設計に大きな影響を齎す変化が採用された. すなわち, Move Semantics である. この登場により, C++11 で「良い」とされるクラス設計は, C++98/03 時代とは若干 異なったものとなる. そこで,この記事では,筆者が C++11 において「良い」と考えているクラス設計を提案してみたい

    C++11 時代のクラス設計に関する提案 - 野良C++erの雑記帳
    rydot
    rydot 2013/06/05
  • Is it possible to figure out the parameter type and return type of a lambda?

  • 『C++ポケットリファレンス』という本を書きました! - Faith and Brave - C++で遊ぼう

    C++11対応の『C++ポケットリファレンス』というを書きました。 C++ポケットリファレンス - Amazon C++ポケットリファレンス - 技術評論社 書は、標準C++のリファレンスです。「何がしたい」から「どうやって」を調べる、逆引きリファレンスの形式をとっています。 ポケットリファレンスはシリーズもので、これまで多くの言語やフレームワークのが出ていますが、縁あって技術評論社さんからC++版のお話をいただき、書かせてもらいました。 今回は、私を含む、C++コミュニティのメンバ6人で書きました。 書はライブラリの使い方を主題として扱いますが、C++11に関する日語書籍はこれが初となる実情があるため、言語の基文法も力を入れて書いています。そのため、書はライブラリのリファレンス書としてだけでなく、C++の入門書として使うこともできると思います。 「ポケットリファレンス」と

    rydot
    rydot 2013/04/24
    わくわく
  • 最新のC++を学ぶ - Barbara Moo氏インタビュー

    Rustが再評価される:エコシステムの現状と落とし穴 In this article, we share findings and insights about the Rust community and ecosystem and elaborate on the peculiarities and pitfalls of starting new projects with Rust or migrating to Rust from othe...

    最新のC++を学ぶ - Barbara Moo氏インタビュー
    rydot
    rydot 2013/03/24
  • C++11 の constexpr での std::mersenne_twister_engine 相当の疑似乱数生成エンジ... - Yahoo!知恵袋

    C++11 の constexpr での std::mersenne_twister_engine 相当の疑似乱数生成エンジ... chu3joshiさん C++11 の constexpr での std::mersenne_twister_engine 相当の疑似乱数生成エンジンの実装を教えてください。 中3女子です。