优化下面的代码:
class BigObject {
private:
char m_manyData[100000];
};
static void quizFour() {
std::map<int, BigObject> group;
//假设在group中存放了很多数据
int whatYouFind = 100;
for(std::map<int,BigObject>::iterator iter = group.begin();
iter != group.end(); iter++;) {
//do some other thing ...
if((*iter).first == whatYouFind) {
BigObject obj;
//do something
group[whatYouFind] = obj;
}
}
}
//程序大概意思是,在map中找到一个成员,然后经过一番操作,将这个成员的值改变
1、for循环中利用迭代器已经找到了要找的那个成员,所以
可将oup[WhatYouFind] = obj改为(*iter).second = obj省去了利用下标查值得时间
2、代码直接可以利用map容器的find()函数比遍历迭代器要快
//。。。省略
std::map<int,BigObject>::iterator iter = group.find(whatYouFind);
if(iter == group.end())
//没找到
} else {
//找到了
}