0

私の目的は、キーに double を、値に構造体を使用して Map オブジェクトを初期化することです。

次のような構造配列があります。

s(1) = [1,2,3];
s(1) = 'str';
s(2) = [4,5,6];
s(2) = 'str2';
s(3) = [7,8,9];
s(3) = 'str3';

次に、次のようなマップ オブジェクトを作成します。

awesome = container.Map(1:3, s);

しかし、次のエラーが発生します。

Error using containers.Map
Specified value type does not match the type expected for
this container.

しかし、私がすればうまくいきます:

awesome = container.Map(1:3, {s1, s2, s3});

なぜこれが起こるのですか?また、構造を値の型として維持しながら機能させるにはどうすればよいですか?

4

1 に答える 1

0

構造設定コードが次のようなものになるように意図されていたと仮定します。

s(1).Numbers = [1,2,3];
s(1).String = 'str';
s(2).Numbers = [4,5,6];
s(2).String = 'str2';
s(3).Numbers = [7,8,9];
s(3).String = 'str3';

次を使用して、構造体配列からマップを作成できます。

theMap = containers.Map( 1:3, arrayfun(@(x) ({x}), s))
于 2012-05-26T03:37:05.313 に答える