find()方法有时间搜索c ++

时间:2017-07-10 12:34:35

标签: c++ windows stl

map<int, GCCollectedInfo*>::iterator it_cltd = m_gcColtedInfoMap->find(locatn);
if (it_cltd != m_gcColtedInfoMap->end())
{        
    vector<ObjectID>::iterator findIter = find(it_cltd->second->m_gcCollectedlist2->begin(), it_cltd->second->m_gcCollectedlist2->end(), objectID);

    if (findIter != it_cltd->second->m_gcCollectedlist2->end())
     {}
}

我在回调方法中编写了这行代码,可能我的矢量大小是50000(或多或少)。当我尝试在我的应用程序中使用此代码时,可以获得更多的加载时间,这比正常时间超过20秒。有没有其他方法可以在向量或列表中找到元素?

1 个答案:

答案 0 :(得分:0)

如果每个50000的查找是常规的,那么最好排序并使用std :: binary_search