最大数

変数を2〜3個の組み合わせで配列を作りたいことが結構ある(つまりは2次元配列)で、配列の長さは当然わからない、と。だから動的確保かvectorとかになるのだが、もう片方は2とか3とか固定長なのだ。
で、最初、こんなヘンな実装をしていました。

vector< int[2] > param;

これ、コンパイルはとおるんですよね。ただし、push_backとかがうまくいきません。んで、次はこんなダサい実装をしました。

struct PARAM{
    int param[2];
};
vector< PARAM > param;

いやまあ、たしかに問題はないんだけどね。ダサいことこの上なし。
で、最終的に採用した方法。

vector< unsigned int > param;

コレの何処が2次元配列かって?確かにこのままでは単なる1次元配列。だが、intは4バイトもあるのだ。だから、上位2バイトと下位2バイトに分ければいいのよね。問題としては負の値が扱いづらいというのと、もう一つは2バイトしか使えないという点。
で、この手の配列、一体何に使うのか?一番よく使うのはパラメタの線形結合。IDと係数を同時に格納するのに2×nの配列が非常に都合がよい。で、上位2バイトにID、下位2バイトに係数を入れる。で、そうなるとちょい心配なのが、IDがはたして2バイトで足りるかどうか。2バイトは全部で65536。キャラパラ系なら十分だとおもわれるが、グローバル変数はちょい危険かも。
まあ、今のところ、IDは全部2バイトで収まるという前提で設計している。キャラクタID・敵ID・アニメーションID・アイテムID・特殊技ID・・等等。頼むからキャラクタ総勢7万人という超大規模ゲームとかは作らないでね。