キーのあなたの範囲が限られているので、あなたは、この場合にはベクトルのベクトルを使用することができます。
vector<vector<MyType> > container(128);
今、あなたがキーとして入力された文字を使用して、適切なコンテナにアクセスすることができます。
MyType myTypeInstance;
char input = 'a';
container[input].push_back(myTypeInstance);
を
これはstd::map(すなわちmap<char, MyType>
)を使用するよりも速くなければなりませんが、可能なすべてのコンテナを前面に配置する必要があります。後者の問題は、96個の値を割り当て、ユーザー入力から32を引くだけで対処することができます。
また、内部コンテナの型の複雑さによっては、値で格納する代わりにポインタ(またはboost::shared_ptrのようなスマートポインタ)を格納することをお勧めします。
vector<vector<shared_ptr<MyType> > > container(96);
生ポインタを使用する場合は、ベクターによって回収されていないアイテムを確実に削除する必要があります。
の場合:std :: map> さらに単純なC配列を使ってこの文字をインデックスにします。 –
Drakosha
マップのキーとしてchar *を使用しないでください。 std :: stringを使用します。私はポインタの順序があなたが望むものだとは思わない。 –
ポインタの順序付けはあまり問題にはなりません(実際に格納されている順序や並べ替えの順序を気にしない限り)...もっと重要なことに、char *は欲しくない等しく、メモリの異なるチャンクに格納されている2つの文字列ではなく、*同じ文字列*(つまり同じメモリ)がキーとして使用されている場合と同じです。 – workmad3