特にこれを読んだ後、私はちょっと驚いています。
私が使う
template <class T>
int GetPosition(vector<T> mVec, T element)
{
return find(mVec.begin(), mVec.end(), element) - mVec.begin();
}
と
template <class T>
int GetPosition(map<T, int> mMap, T element)
{
return mMap.find(element)->second;
}
ベクトルリスト内の特定の要素のインデックスを取得するためのテンプレート関数として。
要素は、インデックスを取得したいオブジェクトへの一意のポインターです。
次に、このテンプレートを for ループで使用します
for(int i = 0; i < myCount; i++)
{
index = GetPosition(myVector, elements[i]) //or GetPosition(myMap, elements[i])
}
私が収集したすべての情報は、マップを使用することを提案しましたが、マップの実装は数桁遅くなりました.57ミリ秒のベクトルバリアントと比較して、マップを使用した場合は70000ミリ秒です。
ここで何かがひどく壊れていますが、何が原因かわかりません。あなたは?
開発プラットフォームは Windows XP 上の MS VS 2008 Standard sp1 です。