色またはラベルでstd::map
にアクセスするために使用できます。Subject
そのために独自のハッシュアルゴリズムを開発する必要はありません。必要なのは、比較演算子を作成することだけです。これは、RGBカラーに32ビット整数を使用し、を使用すると仮定すると、この場合は簡単std::string
ですlabel
。
編集:実際には、マップ以外のものを作成する必要はありません(カスタム演算子はありません)。次のように簡単です。
typedef map<int, MyClass*, greater<int> > IntClassMap;
typedef map<std::string, MyClass*, greater<std::string> > StrClassMap;
IntClassMap inttable;
StrClassMap strtable;
void adding_the_data(){
inttable[0x11223344] = myclasspointer1;
inttable[0x11223345] = myclasspointer2;
inttable[0x11223346] = myclasspointer3;
strtable["test string1"] = myclasspointer1;
strtable["test string2"] = myclasspointer2;
strtable["test string3"] = myclasspointer3;
}
void accessing_example(){
strtable["test string1"]->something;
}
std::map
非常に高速です。それよりも高速なソリューションは必要ないと思います(または見つけることはできません)。