我有点吃惊,尤其是在读完这篇文章之后。
我用
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 毫秒。
这里有些东西很糟糕,但我不知道是什么。你?
开发平台是 MS VS 2008 Standard sp1,在 windows XP 上