問題タブ [c++11]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 戻り値はc ++ 0xで右辺値参照によって渡されますか?
関数があるとしましょう:
C++0x は、偽のコピーが randomVector の戻り値から回避されると具体的に言っていますか? それとも、コンパイラは RVO を実装する必要がありますか? 値randomVector()
を右辺値として扱う必要があるため、v の移動コンストラクターを呼び出す必要があるように思えますが、これが正しいかどうかは完全にはわかりません。
c++ - unordered_set の代わりに set を使用するのはなぜですか?
C++0x は、および他の多くの場所unordered_set
で利用できるようになっています。boost
私が理解しているのは、ルックアップの複雑さunordered_set
を持つハッシュテーブルです。O(1)
一方、ルックアップの複雑さset
を持つツリーに他なりません。なぜ一体誰がの代わりに使うのでしょうか? つまり、もう必要ですか?log(n)
set
unordered_set
set
c++ - C ++ 0xコンセプトとブーストコンセプトチェックライブラリ(BCCL)の違いは何ですか?
ConceptsはC++0x標準を作成しませんでしたが、BoostはBoost Concept Check Library(BCCL)を提供します。BCCLは、C++0x標準に含まれることを意図したすべてを網羅しているわけではないと思います。BCCLと提案されたC++0xソリューションの違いは何ですか?
c++ - 本番環境で GCC の C++0x モードを使用していますか?
本番環境で GCC 4.4.0 C++0xサポートを使用している人はいますか? 最新のMinGWで使おうと思っているのですが、成熟度がいまいちわかりません。
私は興味を持っている:
- TR1 サポート
- 自動
- 初期化リスト
c++ - 静的初期化中にスレッドを安全に作成できますか?
ある時点で、main()の最初の行までスレッドを安全に作成できないことを読んだことを覚えています。これは、コンパイラが特別なコードを挿入して、静的初期化時に実行されるスレッドを機能させるためです。したがって、構築時にスレッドを作成するグローバルオブジェクトがある場合、プログラムがクラッシュする可能性があります。しかし、今は元の記事を見つけることができず、これがどれほど強い制限であるのか興味があります-それは標準によって厳密に真実ですか?ほとんどのコンパイラに当てはまりますか?それはC++0xでも当てはまりますか?標準に準拠したコンパイラが静的初期化自体をマルチスレッド化することは可能ですか?(たとえば、2つのグローバルオブジェクトが互いに接触していないことを検出し、プログラムの起動を高速化するためにそれらを別々のスレッドで初期化します)
編集:明確にするために、私は少なくとも、実装がこの点で本当に大幅に異なるかどうか、またはそれが疑似標準であるかどうかを感じ取ろうとしています。たとえば、技術的には、この標準では、さまざまなアクセス指定子(public / protected / etc。)に属するメンバーのレイアウトをシャッフルできます。しかし、私が知っているコンパイラは実際にこれを行いません。
c++ - なぜSTLの実装はそれほど読めないのですか?ここでC++をどのように改善できたでしょうか。
たとえば、STL実装のほとんどのメンバーが_M_
または_
または__
プレフィックスを持っているのはなぜですか?なぜこれほど多くの定型コードがあるのですか?
ベクトル(たとえば)の実装を明確かつ簡潔にするためにC ++に欠けている機能は何ですか?
c++ - フィールドでのDの使用
私はDに関するいくつかの情報を見つけようとしました。私は、それが何であるかについての概要を得るために、C++とのこの比較が特に好きです。今、私は自分自身に問いかけています。フィールドでDが使用される頻度と、C ++の実行可能な代替手段はどれくらいですか?
c++ - テンプレート パラメーターを指定せずにテンプレート クラスを型定義する
利用可能なTR1ライブラリがあるかどうかに応じて、unordered_mapまたはstd::mapのいずれかをtypedefしようとしています。しかし、テンプレート パラメーターを指定したくありません。これまで読んだことから、公式の c++0x 標準が利用可能になるまで、引数なしでテンプレートを型定義することはできません。では、これに対するエレガントな回避策を知っている人はいますか?
c++ - C++0x のラムダ式に名前付き型がないのは悪いことですか?
私は最近、インターネットでラムダ式について少し読んでいましたが、C++0x のラムダ式には、ラムダ式にのみバインドされる単一の型 (または型) がないように思われます。つまり、ラムダ式です。式は、テンプレート引数またはauto
引数/変数のみに一致します。hereで説明されているように、何が起こるかというと、
ラムダをサポートするコンパイラは、ラムダ式ごとに一意の匿名ファンクター型を作成します
私の質問は、それは悪いことですか? ラムダ式のみに一致するキーワードを使用することは理にかなっていますか?たとえばlambda
、次のように機能します
正直なところ、これの有用性は実際にはわかりません (特に がauto
ラムダ式を受け入れるため、変数にラムダを割り当てることができる場合)。また、特定の 1 つのタイプだけにバインドすることはできません (他のすべてのタイプを除外して)。
本質的に、私の質問は、ラムダ式が匿名であっても問題ないかということです(ユーティリティの観点から-lambda
型の欠如は私たちにいくつかの機能を奪いますか-そして哲学的に-ラムダ式が常に持っていることは本当に意味がありますか? 「タイプ」auto
)?