對於容器,迭代器的理解
阿新 • • 發佈:2018-12-09
優化下面的程式碼:
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 {
//找到了
}