タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

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

  • メイドでもよく分る右辺値参照 - TXT.TXT

    日2014年 2011年から早3年。C++11も浸透してきた、してきてる、してきて欲しいなという時分ですね 冬椿です。ファミレスに行ったらカレーがメニューから消えてました。こんばんは C++11で追加された機能の一つに『右辺値参照』というものがあります こいつは裏で、つまりライブラリ内の実装などで使われることは多くても 実際使ったことがあるという人は少ないのではないしょうか? 右辺値参照が必要になった経緯 例えばこのような関数があったとする List make_big_List() { List temp; for (size_t i = 0; i < 2011; ++i) temp.push_back(i); return temp; } 2011とはとても大きい数だ ゆえに、tempも非常に大きいことが予想される このコードはC++11以前であると tempの中身をコピーする→tem

    メイドでもよく分る右辺値参照 - TXT.TXT
  • C++11やemscriptenと付き合って1年間の振り返り

    Webの未来 〜 PNaClとasm.jsでカワルミライ - いま、モバイルWebの先端で起こっていること

    C++11やemscriptenと付き合って1年間の振り返り
  • 組み込み向けC++のやり方を探る - mbedで楽しい組み込みプログラミング -

    10. C++11が使えると嬉しい(1) #include "mbed.h“ #include <array> int main() { PwmOut led(LED1); const std::array<float, 6> w{0, 0.2, 0.4, 0.6, 0.8, 1.0}; while(true) { for (auto i : w) { led = i; wait(1.0); } } } std::arrayが使える LEDの点灯シナリオ 11. C++11が使えると嬉しい(2) constexprが使える #define NUM_JOINTS 28 #define PWM_RANGE (PWMMAX - PWMMIN) #define DEG_TO_RAD(d) ((d)*M_PI/180.0) #define hoge_read_byte(addr) (*(const

    組み込み向けC++のやり方を探る - mbedで楽しい組み込みプログラミング -
  • Plain Old Data | 闇夜のC++

    C++におけるPOD(Plain Old Data)とは、C言語のデータと互換を持つデータ構造のことです。 memcpyでデータをコピーできたりするものですが、それは質的ではなく、とにかくPODの一番の意味はC言語のデータとbitレベルで完全に互換を持つということです。C++とC言語をまたぐプログラムがある場合、受け渡されるデータはPODでなければいけません。 会話中での出現例でいうと「あれ、ちゃんとPODで作っといてよ!」という具合に使います。 では、PODとは具体的にはどういうデータ構造でしょうか。 C互換データ=PODは、複雑なクラスレイアウトや、構築、コピー、ムーブなどのユーザ定義のセマンティクスを配慮することなく、”単なるデータ”として利用できるオブジェクトである。 __プログラミング言語C++第4版 8.2.6 POD POD型の定義 標準レイアウト型(standard la

  • ADL Firewall | 闇夜のC++

    先人たちが書いたコードからは学びが多いものです。 みんな大好きboostのnoncopyableのソースコードを読んでみましょう。 namespace boost { // Private copy constructor and copy assignment ensure classes derived from // class noncopyable cannot be copied. // Contributed by Dave Abrahams namespace noncopyable_ // protection from unintended ADL { class noncopyable { protected: noncopyable() {} ~noncopyable() {} private: // emphasize the following members

  • Argument Dependent Lookup | 闇夜のC++

    C++言語の持つオシャレな機構の一つにADL(Argument Dependent Lookup)というものがあります。 和訳すると「実引数依存の名前検索」となり、読んで字の如く、「実引数」に依存した「名前検索」となります。なるほどわからん。 ADLの挙動 コードを見ながら順を追って理解してみましょう。

  • ラムダ式考察 - Qiita

    ラムダ式とは C++のラムダ式は、最小の関数オブジェクトを作るシンタックスシュガーです。 キャプチャ キャプチャとは、ラムダ式の外の変数などをラムダ式の中で使えるようにすることです。 具体的には、メンバ変数として持たせることになります。 以下はコピーキャプチャの例ですが、参照キャプチャも大差はありません。 ただし、コピーキャプチャは内部にコピーを持つので、大きな構造体なんかをコピーキャプチャで持つとsizeof( lambda )が膨れ上がります。当然ですが、キャプチャする際にコピーが行われますので、コピーが重たいオブジェクトをコピーキャプチャするのはおすすめできません。 注意するところは、ラムダ式のoperator()はconst修飾されていますので、コピーキャプチャの場合const修飾されていないメンバ関数を呼び出すことができません。 ラムダ式のconst修飾を外すには、mutable

    ラムダ式考察 - Qiita
  • 右辺値参照とムーブ・セマンティクス - S.F. Page

  • シンプルな配列クラスを使って「右辺値参照」と「ムーブセマンティクス」を知る - Qiita

    C++11 の新しい機能に「右辺値参照」と「ムーブセマンティクス」があります。 ググればこれらに関して解説されてるサイトが結構ありますが、一般的には理解しづらいものとして扱われてるみたいです。 かくいう自分もよくわかりませんでした……。 ですので、今回は至ってシンプルな配列クラスを使って、これらが何を意味するのかを知ろうかと思います。 従来は「コピー」 まずは、「右辺値参照」と「ムーブセマンティクス」を使わないコードを見てみます。 # include <iostream> using namespace std; struct Array { typedef int ValueType; ValueType *p; int length; // コンストラクタ Array(int _length) : p(new ValueType[_length]) , length(_length)

    シンプルな配列クラスを使って「右辺値参照」と「ムーブセマンティクス」を知る - Qiita
  • ちょっとだけC++11 "明示的な仮想関数のオーバーライド" を試してみる - opamp_sando's blog

    2012-02-08 ちょっとだけC++11 "明示的な仮想関数のオーバーライド" を試してみる まあ、C++11を完全にサポートしてるフリーのコンパイラって自分が知るかぎりない...ので。まだC++11を格的にやるには早いかもしれないのでちょっとだけ。 こんな調子で暇な時に新機能研究とかもやっていけたらと思う。今日は明示的(Explicit)な仮想関数のオーバーライドについて。まあ、普通にクラス関数などをオーバーライドする時に明示的に記述が可能になりましたよってだけの話。例えば以下のように... #include<iostream> class A{ public: A(){}; virtual void f(){std::cout<<"hello world\n";}; //オーバーライドされる仮想関数(virtual)。 }; class B:public A{ //class

  • 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
  • unique_ptr はクラスの正確なサイズを知らないといけない? - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    unique_ptr はクラスの正確なサイズを知らないといけない? - Qiita
  • メンバー関数へのポインターを返すメンバー関数へのポインターを返すメンバー関数

    class Foo;が存在したとして(1)Fooのメンバ関数ポインタ(2)を戻すメンバ関数のポインタが欲しいと思った(なお(1)で戻すメンバ関数もFooのメンバ関数ポインタを戻す)のだが、どうあがいても記述出来ないものだったりするのだろうか? ようするに、以下のようなことがしたいわけだ。 class Foo { public : // メンバー関数a void a() { } // メンバー関数aへのポインターを返すメンバー関数b ??? b() { return &Foo::a ; } // メンバー関数aへのポインターを返すメンバー関数bへのポインターを返すメンバー関数c ??? c() { return &Foo::b ; } } ここで、???の部分に戻り値の型を記述しなければならない。 もちろんこれは記述できる。ただしその記述は、C++の規格のバージョンにより難易度が異なる。 C

  • C++11 (他) 入門

    C++11 (他) 入門 1. C++11 (他) 入門 ~ Java, C, +αを学んだ貴方へ(というのは真っ赤な嘘) Yuta Hirokawa, @krustf/総長1 2012/2/15 2. 内容, 注意 Effective C++ の重要そうな部分を独断で抜き出し C++11 の規格で直結しそうな機能を幾つか紹介 テンプレートに関するテクニックを少々解説 最新規格 C++11(旧称C++0x) に則る  ウェブページや書籍では未だC++0x表記による情報が多い 検索時は気を付けること 2 導入 2012/2/15 3. 注意 C++11 完全対応コンパイラは未だ無い  2012年2月14日現在 当スライドでは以下の環境を使用する 一部以下の環境では使えないコードがある(かも) Compiler gcc 4.5 Build Option -std=gnu++0

    C++11 (他) 入門
  • 【C++】std::bindの使い方 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    【C++】std::bindの使い方 - Qiita
  • unique_ptr のデリータ指定 - krustf の雑記

    25日の記事のコメントで default_delete の特殊化で解決する方法を教えていただきました。ありがとうございます。 個人的メモとして今の所知ってる unique_ptr のデリータ指定方法を纏めておきます。 1.関数オブジェクトを渡す 一番メジャーな方法。関数オブジェクトを作って default_delete の代わりに指定します。 struct master_voice_deleter { void operator()( IXAudio2MasteringVoice* voice ) const { voice->DestroyVoice(); } }; std::unique_ptr< IXAudio2MasteringVoice, master_voice_deleter > ptr; 2. default_delete の特殊化で解決 default_delete をテ

    unique_ptr のデリータ指定 - krustf の雑記
  • ぼやきごと/2012-09-26/C++11:pimplイディオムにおけるデストラクタの default 指定 - ルーチェ's Homepage

    上述のコードにおいて = default の記述がある宣言は書いても書かなくても生成されるクラスは同じです。 しかし書かなかった場合、他の人がコードを読んだ時に「コンパイラに自動生成させようとしている」のか、「単に書き忘れた」のかが区別できません。 敢えて default 指定の宣言を記述することで、「私はこれらをコンパイラに自動生成させています」というアピールになります。 また、他の人だけでなく、コンパイラにもその意図を明示的に伝えることができ、コンパイラによっては最適化の助けになる可能性もあるでしょう。 C++11では、特別な処理をさせる場合を除き、記述を省略したりましてや空っぽの実装を書いたりせずに default 指定を積極的に用いるべきです。 特にデストラクタについては、リソースの解放はメンバ変数に任せてヘッダファイルでの default 指定を義務化するくらいのつもりで考えるべ

  • C++11時代におけるクラスの書き方 - イグトランスの頭の中

    記事は、C++11 Advent Calendar 2011 : ATNDの2日目の記事です。 C++のclassは様々な使い方ができます。後発のほかの言語ではいくつもの概念に分かれているものも、C++ではすべてclassということもあります。 そこで、C++でclassを定義する際も、classと一括りにせず、自分がいったいどんなclassを書こうとしているのか明確に意識するとよいのではないだろうかと考えました。そのために、私なりのclassの分類をまとめ、この記事を書くことにしました。 これは、各々のプログラミング言語の経験により違いが出ることと思います。異論もあると思いますので、ご自身でも考えてみるとよいと思います。 以下、この記事では4種類に分類しています。 1つ目は「オブジェクト指向プログラミング (OOP) を実現するクラス」です(長いので以下OOPクラスと略します)。 vi

    C++11時代におけるクラスの書き方 - イグトランスの頭の中
  • C++11メモ @ charやintより移植に強いint8_t, int32_tなどのbit数指定整数を使う - ラーメンは味噌汁

    2013-09-18 C++11メモ @ charやintより移植に強いint8_t, int32_tなどのbit数指定整数を使う C++11 bit数指定整数とは charやintなどの整数値のbit数は厳密に定義されていませんでした。・charのbit数は処理系依存 ・整数型のbit数は処理系依存、ただしshort ≦ int ≦ longを満たす更に恐ろしい事に ・charが符号付きか符号無しかは処理系依存定義としてはこの程度のものです。これではとても移植性の高いプログラムは書けません。 よくC言語の入門書に載っている例 こんな表をよく見かけます。 型 bit数 最小値 最大値 char 8bit -128 127 short 16bit -32768 32767 int 32bit -2147483648 2147483647 long 32bit -2147483648 21

    C++11メモ @ charやintより移植に強いint8_t, int32_tなどのbit数指定整数を使う - ラーメンは味噌汁
  • C++0xの完全なドラフトが9月に出ること、および、Iotaについて

    yey! : Trip Report: June 2008 ISO C++ Standards Meeting « Sutter’s Mill しかし、iotaはどういう語源なんだろうと思って調べてみた。何しろ、ノンネイティブな私に乗っては、意味がさっぱり分からない。iota(v.begin(), v.end(), 1)などと書かれていても、さっぱり意味が分からない。 アルゴリズム、iotaはとても簡単である。意味も簡単であれば、実装も簡単。 template < typename Iter, typename Value > void iota( Iter first, Iter last, Value value) { for ( ; first != last ; ++value, ++first ) { *first = value ; } } であるから、先ほどの例、iota(v