構造を取得しましたが、そのサイズがわかりません (毎回異なります)。この構造体のいずれかのフィールドの最後の桁を特定の値に設定したいと思います。擬似コードでは、次のようなことを意味します: structureA.fieldB[end] = cert_value ;
私はmatlabでそれを行いますが、どうにかしてc ++で適切な構文を見つけることができません。助けてもらえますか?
Matlab では、構造体データ型はキーと値のペアを保持し、「値」は異なる型である可能性があります。C++ では、利用可能なキーと値のコンテナー (set、map、multimap などの連想コンテナー) がいくつかありますが、通常は単一の型の要素を格納します。私がそれを正しく理解していれば、あなたが必要とするのは次のようなものです
「1」:1
「2」: [1,2,5]
「3」:「名前」
これは、構造がPython の辞書に似ていることを意味します。
C++ では、まったく異なる型のコンテナーを使用する方法について私が聞いた唯一の方法は、boost::anyを使用することです。これは、この質問に対する回答として受け入れられています。
コンテナーに異なる型の要素をパックする場合、コンテナーの end() メンバー関数を使用して最後の要素を取得できます。
sizeof が必要です。これにより、配列のサイズがバイト単位でわかります。最後の要素のインデックスが必要なため、この数値を 1 つの要素のバイト数で割る必要があります。最終的には次のようになります。
int index_end = sizeof(structureA.fieldB) / sizeof(structureA.fieldB[0]);
structureA.fieldB[index_end] = new_value;