我有點驚訝,特別是在讀this後。爲什麼在我的應用程序中查找stl :: map比stl :: vector慢?
我用
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;
}
爲模板函數來獲取特定元素的索引,我矢量respectivly名單。
元素是唯一指向對象的指針,其中我想檢索索引。
然後我用這個模板在for循環像
for(int i = 0; i < myCount; i++)
{
index = GetPosition(myVector, elements[i]) //or GetPosition(myMap, elements[i])
}
雖然我收集的信息的所有位建議使用的地圖,地圖上實現幅度比較慢幾個數量級:使用57毫秒使用地圖比較70000ms的矢量變體。
這裏有東西被切斷了,但我不知道是什麼。你做?
發展plattform是MS VS 2008標準版SP1,Windows XP上
謝謝。這樣可以降低查找成本在這兩種情況下幾乎沒有什麼(我的測試用例爲6毫秒)。現在這是我的一個非常愚蠢的錯誤;) – sum1stolemyname 2010-07-08 05:46:58