答えて
「スカラー」が何であるかに応じて、C++で行うことができます。構文はあなたの例で書いたものとほとんど正確に(おそらく正確には、でも、私は組合では錆びている)です。これは、C言語と同じですが、ユニオンに含めることができる型(IIRCではデフォルトのコンストラクタが必要です)に制限がある点を除きます。関連するWikipedia articleがここにあります。
スカラは浮動小数点または倍精度です。ありがとう – mpen
より正確です、なぜva [0]への参照を参照するだけではなく、v [1]への参照を参照してください。
+1。これは、v [1]がyに対応するC++言語規則によって保証されていないという事実をうまく乗り越えます。 –
構造体上で動作するコードがこれらの参照をローカル変数として宣言することを意味すると仮定すると、コンパイラはそれらを最適化して、パフォーマンスを心配する必要はありません。 –
試してみてください:
template<class T>
struct U1
{
U1();
T v[2];
T& x;
T& y;
};
template<class T>
U1<T>::U1()
:x(v[0])
,y(v[1])
{}
int main()
{
U1<int> data;
data.x = 1;
data.y = 2;
}
g ++はsizeof(U1
@Michael:なぜそれは2であるべきだと思いますか? –
私は、基本的に2つのデータへのアクセスを提供する何かのために、結果として得られる構造体は2つの追加ポインタを保持することによって大幅に拡張されていると言っています...それは場合によっては受け入れられ、この解決策を見ている人にはただの警告です。 –
私はこれまでにこのようなものを使用しました。私はその標準で100%OKだとは確信していませんが、それを使用するのに必要なコンパイラであればOKです。
struct Vec2
{
float x;
float y;
float& operator[](int i) { return *(&x+i); }
};
したい(あなたはおそらくしたいはずです)、あなたはあまりにも[]演算子のconstのバージョンを提供できる場合は、[]オペレータに境界チェックなどを追加することができます。
- 1. Private Varsを使用したPHP配列
- 2. PHPの配列 - ディスプレイ未使用VARS
- 3. ユニオンと共有データフィールド(C++)
- 4. 配列ユニオンの集約関数[HIVE]
- 5. laravel - 各クエリのユニオン設定配列キー
- 6. ユニオン配列の長さを求める
- 7. Objective-C高速列挙アクセスインスタンスvars
- 8. obj-cのCスタイルメンバーvars
- 9. C#のActivator.CreateInstanceはVARS
- 10. C/C++でのユニオンのサイズ
- 11. C・ユニオン、構造体
- 12. メモリ配置とC配列
- 13. C配列とコード
- 14. C++ポインタと配列
- 15. C++配列とオーバーフロー
- 16. 配列とポインタC
- 17. 配列とソートC
- 18. C配列とヌルバイト
- 19. C:ポインタと配列
- 20. cポインタと配列
- 21. C - ポインタと配列
- 22. Laravelスコープとユニオン
- 23. ReflectionObjectとキャストの配列対キャストvarsを取得するためのget_object_vars
- 24. 異なるタイプのユニオン配列の出力を出力
- 25. アクセス親@ComponentとVARS
- 26. Kotlintestインターセプタとlateinit vars
- 27. 静的配列と動的配列のC/C++パフォーマンス
- 28. c programmin配列とポインタ
- 29. 配列とCの構文
- 30. C++とJavaバイト配列
C++は配列の要素が連続して配置されることを保証しますが、POD構造体の要素のアドレスが以前宣言されたすべての要素のアドレスよりも大きいことを保証しています。つまり、v [1]とyは対応していない可能性はありますが、それは可能です。 –
@ j_random_hacker:本当ですか?私は、Cから継承された別のルールがあると信じています。そこから、最初のパディングはありません(最初の要素の型のポインタを介して構造体にアクセスすることについてのエイリアシングルールIIRCの何か) – MSalters
C++も同様です。最初のパディングはありませんが、@ j_random_hackersポイントは、最初の要素の後に(そして2番目の要素の前に)構造体にパディングがある可能性があると考えています – jalf