の可変長異種シーケンスを実装するためにどのように異なるサイズの2つの構造体をあります。構造体
手書きの例は次のようになります。だから、
Struct A a0 = { ... };
Struct A a1 = { ... };
Struct B b0 = { ... };
Struct A a2 = { ... };
Struct B b1 = { ... };
Struct B b2 = { ... };
、この場合には、「配列」a0, a1, b0, a2, b1, b2
です。
私はこのシーケンスをいくつかのデータ構造に "置きたい"と思います。 (完全なシーケンスの長さは、実行時にのみ認識され、各インスタンスの出現順序はstruct A
とstruct B
です)
これを行う最も簡単な方法は何ですか?
Pythonでは、例えば、私のような何かをしたい:
Class A:
def __init__(self, x, y, z):
self.x, self.y, self.z = x, y, z
Class B:
def __init__(self, x, y):
self.x, self.y = x, y
# Manual example
a0 = A(...)
a1 = A(...)
b0 = B(...)
a2 = A(...)
b1 = B(...)
b2 = B(...)
my_list = []
# The list gets updated as the program runs
my_list.append(a0)
my_list.append(a1)
my_list.append(b0)
my_list.append(a2)
my_list.append(b1)
my_list.append(b2)
# etc., etc.
どのように私はCの等価を行うことができますか?
AとBとのラッパー構造体とユニオン。 – BLUEPIXY
幅広く/意見があります。しかし、標準的なPython実装がC言語で書かれていることを暗示するものではありません。 – Olaf
あまりにも幅広くはありませんが、underspecified:配列にO(1)検索時間があります。これは、OPケースでは、追加のスペースを使用して(ユニオンまたはインデックスを介して)行うことができます。または、構造体に必要な領域のみをO(n)ルックアップすることができます。スピード/スペースの条件で要件を記述できますか? – danh