【发布时间】:2013-01-02 15:15:56
【问题描述】:
我正在尝试优化 std::vector“搜索” - 基于索引的迭代向量并返回与“搜索”条件匹配的元素
struct myObj {
int id;
char* value;
};
std::vector<myObj> myObjList;
创建几千个具有唯一 id 和值的条目,并将它们推送到向量 myObjList。
检索与id 匹配的myObj 的最有效方法是什么。
目前我的索引迭代如下:
for(int i = 0; i < myObjList.size(); i++){
if(myObjList.at(i).id == searchCriteria){
return myObjList.at(i);
}
}
注意:searchCriteria = int。所有元素都有独特的id。
以上方法可以完成这项工作,但可能不是最有效的方法。
【问题讨论】:
-
你的元素是否以任何方式排序?
-
列表是在读取数据时创建的,不会以任何方式排序。
-
在尝试真正优化涉及
std::vector的任何代码时要考虑的第一点是使用operator[]而不是at,这每次都会进行完全不必要的范围检查。 -
感谢 Christian - 我将在今天晚些时候测试“operator[]”,以获取最低的挂果 :)
标签: c++ search vector iterator