1. 程式人生 > >對於容器,迭代器的理解

對於容器,迭代器的理解

優化下面的程式碼:

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 {
    //找到了
}