我正在尝试优化一个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 Rau