問題タブ [initializer-list]
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初期化子リスト機能をどのように利用できるかを確認したいと思います。
例0:
次のようなものをサポートしますか?
例1:
または、このようなリテラルが必要ですか?:
例2:
もしそうなら、AskStringとAskの違いはどのように処理されますか?
c++ - C++0x、コンパイラ フック、およびハード コーディングされた言語機能
C++0x のいくつかの新機能に少し興味があります。特に、範囲ベースの for ループと初期化リスト。両方の機能が正しく機能するには、ユーザー定義のクラスが必要です。
私はこの投稿に出くわしましたが、トップアンサーは役に立ちました。それが完全に正しいかどうかはわかりません(おそらく完全に誤解しているだけです。最初の回答の3番目のコメントを参照してください)。初期化子リストの現在の仕様によると、ヘッダーは 1 つの型を定義します。
これは仕様で確認できます。 Ctrl + F 'class initializer_list'だけです。
= {1,2,3}
をクラスに暗黙的にキャストするためinitializer_list
に、コンパイラは と の間の関係について何らかの知識を持っている必要が{}
ありinitializer_list
ます。何かを受け取るコンストラクターはないため、initializer_list は、コンパイラーが実際に生成しているものにバインドされるラッパーです。
これはループと同じでfor( : )
、ユーザー定義型が機能する必要があります (ただし、仕様によると、配列と初期化子リストのコードを必要としないように更新されています。しかし、初期化子リストには が必要な<initializer_list>
ので、ユーザー定義コードの要件です。プロキシー)。
ここでこれがどのように機能するかを完全に誤解していますか? これらの新機能がユーザー コードに非常に大きく依存していると考えるのは間違いではありません。機能が中途半端で、機能全体をコンパイラに組み込むのではなく、コンパイラによって半分が行われ、インクルードで半分が行われているように感じます。これの理由は何ですか?
編集:「ユーザーコードに大きく依存する」ではなく、「コンパイラコードに大きく依存する」と入力しました。これは私の質問を完全に放棄したと思います。私が混乱しているのは、コンパイラに組み込まれている新機能に関するものではなく、ユーザー コードに依存するコンパイラに組み込まれているものです。
c++ - C++: 構造体/クラスのコンストラクターと初期化子のリスト
(コンストラクターを持たない) 構造体/クラスのオブジェクトは、初期化リストを使用して作成できます。これがコンストラクターを持つ構造体/クラスで許可されないのはなぜですか?
c++ - 関数の引数としてのstd::initializer_list
どういうわけか、C ++ 0xはstd::initializer_list
、たとえば、そのようなものから構築できる型を期待する関数の関数の引数として許可されていると思いましstd::vector
た。しかし、どうやら、それは機能しません。これは私のコンパイラだけですか、それともこれは機能しませんか?潜在的な過負荷解決の問題が原因ですか?
c# - C# の配列の配列
- C#で配列の配列を初期化する方法を知る必要があります..
多次元配列が存在することは知っていますが、私の場合は必要ないと思います! 私はこのコードを試しました..しかし、イニシャライザリストで初期化する方法を知ることができませんでした..
double[][] a=new double[2][];// ={{1,2},{3,4}};
ありがとうございました
PS: なぜ私がそれを使用するのか疑問に思っている場合: obj[0] を呼び出すと配列を返すデータ構造が必要です..私はそれが奇妙であることを知っています..
ありがとう
c++ - VC10 で initializer_list が機能しない
私はこのプログラムを VC++ 2010 で書きました:
しかし、プロジェクトをコンパイルすると、次のエラーが発生します。
エラー 1 エラー C2552: 'c': 非集計は初期化リスト c:\users\pswin\documents\visual studio 2010\projects\test_c++0x\test_c++0x\main.cpp で初期化できません 27
と
2 IntelliSense: '{...}' による初期化は、タイプ "class1" のオブジェクトには許可されていません c:\users\pswin\documents\visual studio 2010\projects\test_c++0x\test_c++0x\main.cpp 27
何が問題ですか?
c - C コンパイル エラー:「可変サイズ オブジェクトが初期化されていない可能性があります」
次のコードで「可変サイズ オブジェクトが初期化されていない可能性があります」というエラーが表示されるのはなぜですか?
c++ - std :: map拡張初期化子リストはどのようになりますか?
それが存在する場合でも、std::map
拡張初期化子リストはどのようになりますか?
私はいくつかの組み合わせを試しました...まあ、GCC 4.4で考えられることはすべてありましたが、コンパイルされたものは何も見つかりませんでした。
c++ - 「イニシャライザが少なすぎます」でコンパイル エラーを引き起こすことはできますか?
集約初期化子を使用して、単体テスト用の静的データのブロックを設定しています。
予想される要素数として配列サイズを使用したいのですが、提供される初期化子が少なすぎると失敗する可能性があります。
これにより、Visual Studio 2008 でコンパイラ エラーは発生しません。
私はそれを次のように使用できるようにしたいと思います:
しかし、14 ポイントのコンパイル時の保証がないため、これは、提供された値の配列の終わりから、デフォルトで初期化された値に入ります。
コンパイル時に集約配列初期化子の数を強制することはできますか?
c++ - コンストラクター初期化子でのメンバー配列の初期化
=
その理由は、配列は構文でのみ初期化できるためだと思います。つまり、次のとおりです。
質問
- どうすればやりたいことを実行できますか (つまり、コンストラクターで配列を初期化します (本体に要素を割り当てません))。それは可能ですか?
- C++03 標準は、ctor 初期化子での集計 (配列を含む) の初期化について特別なことを述べていますか? または、上記のコードの無効性は、他のいくつかのルールの結果ですか?
- C++0x 初期化リストは問題を解決しますか?
PSベクトル、boost::arrays、および配列に対するそれらの優位性については言及しないでください。