1

これはもっと一般的な質問ですが、プログラミング言語ごとにスペースが異なるかどうかわからないので、actionscript-3でタグ付けしました。通常は1要素のベクトルが必要な場合がたくさんありますが、場合によってはそれ以上になることもあります。たとえば、intを使用する場合と1 intのベクトルを使用する場合、どれだけ多くのメモリを節約できますか?ベクトル内のすべての数値に対して何かを行う関数があるとしましょう。通常、入力は単一のintになりますが、さらに必要になる場合もあります。ベクトルのサイズも固定されているので、1要素のベクトルが2要素のベクトルに変わる可能性はありません。

今、私は2つのことをすることができました:

1)ベクトルしか使用できず、ベクトルを取り込む関数が1つある、または

2)単一のintを受け取る1つの関数と、同じことを行うがintのベクトルを受け取る別の関数を定義できます。

または、任意のタイプの引数を取り込んで、入力のタイプを確認してから、整数またはベクトルにキャストすることもできますか?基本的に、両方のケースに対応する2つの関数を作成する必要がありますか、それともベクトルのみを使用する1つの関数を作成する必要がありますか?

4

1 に答える 1

1

それは実際には当てはまらなかったので、OKは古い例を取り出しました。

ベクトルのサイズが事前に指定されていない場合、ベクトルのスペースが不足するとサイズが大きくなります。ベクトルのサイズが大きくなるたびに、新しいメモリブロックが割り当てられます。したがって、ベクトルのサイズを事前に定義しないことで、メモリフットプリントは1つのintを格納するために必要なものになります。

したがって、1つのクラスを作成することは、それだけに基づいて悪い考えではありません。しかし今、あなたはそのすべてのOOPを見る必要があります。したがって、ほとんどのロックに1つのキーがある場合、特にそれを行う必要があることを知るために、ほとんどの場合、lock.keys [0]にアクセスする必要はありません。それでも、必要なのは必要があり、1つのキーがあります。lock.lockTypeまたはlock.requiredNumKeys、あるいはその両方。このロジックとプロパティはすべて、複数のキーが必要になるまれな時期に固有のものであるため、私は言います...

2つのクラスを作成します。

編集:

私が言及したいと思ったことの1つは、2つのクラスを使用する場合、おそらくある時点でロックの配列またはコレクションが必要になることです。関数addKey()とget isLocked()を定義するIKeyedLockのように、両方のクラスを実装してインターフェイスを作成します。これにより、すべてのIKeyedLocksのリストを作成できますが、SingleKeyLockクラスとMultiKeyLockクラスは、ロックされているかどうかとその方法を異なる方法で決定します。 1つまたは複数のキーを追加するには

于 2012-12-02T16:44:37.350 に答える