0

構造を取得しましたが、そのサイズがわかりません (毎回異なります)。この構造体のいずれかのフィールドの最後の桁を特定の値に設定したいと思います。擬似コードでは、次のようなことを意味します: structureA.fieldB[end] = cert_value ;

私はmatlabでそれを行いますが、どうにかしてc ++で適切な構文を見つけることができません。助けてもらえますか?

4

2 に答える 2

3

Matlab では、構造体データ型はキーと値のペアを保持し、「値」は異なる型である可能性があります。C++ では、利用可能なキーと値のコンテナー (set、map、multimap などの連想コンテナー) がいくつかありますが、通常は単一の型の要素を格納します。私がそれを正しく理解していれば、あなたが必要とするのは次のようなものです

「1」:1

「2」: [1,2,5]

「3」:「名前」

これは、構造がPython の辞書に似ていることを意味します。

C++ では、まったく異なる型のコンテナーを使用する方法について私が聞いた唯一の方法は、boost::anyを使用することです。これは、この質問に対する回答として受け入れられています。

コンテナーに異なる型の要素をパックする場合、コンテナーの end() メンバー関数を使用して最後の要素を取得できます。

于 2013-01-09T09:38:06.677 に答える
1

sizeof が必要です。これにより、配列のサイズがバイト単位でわかります。最後の要素のインデックスが必要なため、この数値を 1 つの要素のバイト数で割る必要があります。最終的には次のようになります。

int index_end = sizeof(structureA.fieldB) / sizeof(structureA.fieldB[0]);
structureA.fieldB[index_end] = new_value;
于 2013-01-09T10:08:06.137 に答える