私はゲームを開発しています。ゲームオブジェクトを次のマップに保存します。
std::map<std::string, Object*> mObjects;
std::string
コードでさらに検索するオブジェクトのキー/名前です。次のようないくつかのオブジェクトを指すのは非常に簡単ですmObjects["Player"] = ...
。しかし、そのマップでの各検索でstd :: stringが割り当てられるため、速度が低下するのではないかと思います。そこでint
、そのマップのキーとして使用することにしました。
最初の質問:それは本当に速いのでしょうか?
次に、アクセスしている現在のタイプのオブジェクトを削除したくないので、crc
文字列計算をキーとして格納する方法を見つけました。例えば:
Object *getObject(std::string &key)
{
int checksum = GetCrc32(key);
return mObjects[checksum];
}
Object *temp = getOject("Player");
それともこれは悪い考えですか?計算crc
には。を使用しますboost::crc
。または、これは悪い考えであり、チェックサムの計算は、キータイプを使用してマップを検索するよりもはるかに遅くなりますstd::string
か?