【发布时间】:2017-07-10 12:34:34
【问题描述】:
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 秒。有没有其他方法可以在向量或列表中查找元素?
【问题讨论】:
-
数据排序了吗?
-
你是绑定向量还是列表?你能把它改成不同的吗?
-
在向量中搜索很慢( O(n) )。所以你在一个不是很小的向量中搜索两次。我也不知道您的相等运算符的复杂性。为了提高速度,如果可能,请使用另一个容器,例如 unordered_map
-
@acraig5075 否。数据以未排序的格式存储。
-
@KjMag 我在我的代码中使用了向量。在这种情况下哪个 stl 库更好?