タグ付けされた質問 「c++11」

このタグは、C ++ 11としてコンパイルする必要があるコードに使用します(C ++ 14以降で導入された機能は使用しません)。

8
C ++ 11は、標準化されたメモリモデルを導入しました。どういう意味ですか?そして、それはC ++プログラミングにどのように影響しますか?
C ++ 11は標準化されたメモリモデルを導入しましたが、それは正確にはどういう意味ですか?そして、それはC ++プログラミングにどのように影響しますか? この記事(Herb Sutterを引用しているGavin Clarkeによる)は、 メモリモデルとは、C ++コードに、だれがコンパイラを作成したか、どのプラットフォームで実行しているかに関係なく、標準ライブラリが呼び出されるようになったことを意味します。さまざまなスレッドがプロセッサのメモリと通信する方法を制御する標準的な方法があります。 「標準にある異なるコア間で[コード]を分割することについて話しているときは、メモリモデルについて話している。人々がコードで行う次の仮定を破ることなく、メモリモデルを最適化する」とSutterは述べた。 まあ、私はこれとオンラインで利用可能な同様の段落を覚えることができます(私は誕生時から自分の記憶モデルを持っているので:P)。他の人からの質問への回答として投稿することもできますが、正直なところ、私は正確に理解できませんこの。 C ++プログラマーは以前にもマルチスレッドアプリケーションを開発していたのですが、POSIXスレッド、Windowsスレッド、C ++ 11スレッドのどれが重要なのでしょうか。メリットは何ですか?低レベルの詳細を理解したいと思います。 また、C ++ 11のメモリモデルは、C ++ 11のマルチスレッドサポートに何らかの形で関連していると感じています。もしそうなら、正確にはどうですか?なぜそれらを関連付ける必要があるのですか? マルチスレッドの内部がどのように機能するのか、および一般的にメモリモデルが何を意味するのかわからないので、これらの概念を理解してください。:-)


12
移動セマンティクスとは何ですか?
C ++ 0xに関するScott Meyersとのソフトウェアエンジニアリングのラジオポッドキャストインタビューを聞いたところです。新機能のほとんどは私にとって理にかなっており、1つを除いて、実際にC ++ 0xに興奮しています。私はまだ移動セマンティクスを取得しません...それは正確には何ですか?

21
オブジェクト自体ではなくポインタを使用する必要があるのはなぜですか?
私はJavaの出身で、C ++でオブジェクトの操作を開始しました。しかし、私に起こったことの1つは、人々はしばしばオブジェクト自体ではなくオブジェクトへのポインタを使用することです。たとえば、次の宣言: Object *myObject = new Object; のではなく: Object myObject; または、関数を使用する代わりにtestFunc()、次のようにしましょう: myObject.testFunc(); 私たちは書く必要があります: myObject->testFunc(); しかし、なぜこのようにする必要があるのか​​理解できません。メモリアドレスに直接アクセスできるので、効率と速度に関係していると思います。私は正しいですか?
1602 c++  c++11  pointers  c++-faq 


11
右辺値、左辺値、x値、glvalues、およびprvaluesとは何ですか?
C ++ 03では、式は右辺値または左辺値のいずれかです。 C ++ 11では、式は次のようになります。 右辺値 左辺値 xvalue 輝かしい prvalue 2つのカテゴリが5つのカテゴリになりました。 これらの新しい表現のカテゴリは何ですか? これらの新しいカテゴリは、既存の右辺値および左辺値のカテゴリとどのように関連していますか? C ++ 0xの右辺値と左辺値のカテゴリは、C ++ 03と同じですか? これらの新しいカテゴリが必要なのはなぜですか?されているWG21の神々は、ちょうど私たち単なる人間を混同しようとしていますか?
1356 c++  expression  c++-faq  c++11 

7
C ++ 11の「typedef」と「using」の違いは何ですか?
C ++ 11ではusing、typedefsのような型エイリアスを書き込むために使用できることを知っています。 typedef int MyInt; 私が理解していることから、これは次と同等です: using MyInt = int; そして、その新しい構文は、 " template typedef" を表現する方法を持つための努力から生まれました。 template< class T > using MyType = AnotherType< T, MyAllocatorType >; しかし、最初の2つの非テンプレートの例では、標準に他の微妙な違いがありますか?たとえば、typedefsは「弱い」方法でエイリアシングを行います。つまり、新しいタイプは作成されず、新しい名前のみが作成されます(これらの名前間の変換は暗黙的です)。 それと同じusingですか、それとも新しいタイプを生成しますか?違いはありますか?

4
C ++ 11でのT &&(二重アンパサンド)の意味は?
私はC ++ 11の新機能のいくつかを調査してきましたが、気付いたのは、変数の宣言における2つのアンパサンドT&& varです。 まず、この獣は何と呼ばれていますか?Googleがこのような句読点を検索できるようにしてほしい。 正確にはどういう意味ですか? 一見、それは(Cスタイルのダブルポインターのような)二重参照のように見えますが、T** varその使用例を考えるのに苦労しています。

7
push_backとemplace_back
私は少しの違いについて混乱しているpush_backとemplace_back。 void emplace_back(Type&& _Val); void push_back(const Type& _Val); void push_back(Type&& _Val); push_back右辺値参照を取得するオーバーロードがあるので、目的emplace_backがどうなるかよくわかりませんか?


13
const std :: string&をパラメーターとして渡す日はありますか?
私は理由が合格することが示唆されたハーブサッターによる最近の話を聞いたstd::vectorとstd::stringすることによりconst &大幅になくなっているし。彼は次のような関数を書くことが今や望ましいと提案しました: std::string do_something ( std::string inval ) { std::string return_val; // ... do stuff ... return return_val; } 私return_valは、関数が戻る時点で右辺値になるため、非常に安価な移動セマンティクスを使用して返すことができることを理解しています。ただし、inval参照のサイズ(通常はポインターとして実装されます)よりもはるかに大きいです。これはstd::string、ヒープへのポインタやchar[]短い文字列の最適化のためのメンバーなど、さまざまなコンポーネントがあるためです。ですから、参照渡しはまだ良い考えのようです。 ハーブがなぜこれを言ったのか誰もが説明できますか?
604 c++  c++11 


13
nullptrとは正確には何ですか?
これで、C ++ 11に多くの新機能が追加されました。(少なくとも私にとって)面白くて混乱するのは、新しいnullptrです。 まあ、厄介なマクロはもう必要ありませんNULL。 int* x = nullptr; myclass* obj = nullptr; それでも、nullptr動作がわかりません。たとえば、Wikipediaの記事では次のように述べています。 C ++ 11では、これを修正するために、識別されたnullポインター定数として機能する新しいキーワード nullptrを導入しています。これはnullptr_t型であり、暗黙的に変換可能であり、任意のポインター型またはメンバーへのポインター型と比較できます。boolを除いて、暗黙的に変換したり、整数型と比較したりすることはできません。 キーワードと型のインスタンスはどうですか? また、nullptr古き良きより優れている別の例(ウィキペディア以外のもの)はあり0ますか?
570 c++  pointers  c++11  nullptr 


6
イテレーターの無効化ルール
C ++コンテナーのイテレーター無効化ルールとは何ですか? できれば要約リスト形式で。 (注:これはStack OverflowのC ++ FAQへのエントリになることを目的としています。このフォームでFAQを提供するという考えを批評したい場合は、これをすべて開始したメタへの投稿がそのための場所になります。回答その質問はC ++チャットルームで監視され、FAQのアイデアはそもそも最初から始まっているため、アイデアを思いついた人があなたの答えを読む可能性は非常に高いです。
543 c++  c++11  iterator  c++17  c++-faq 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.