簡體   English   中英

迭代器類型的模板

[英]Template for iterator type

我想創建一個模板方法,用於獨立於元素類型添加和計算地圖(stl)中的元素。 問題是:我可以為迭代器類型使用模板,如下所示嗎?

template < typename Type, typename Iter >
void TextStat::addElement(Type element, map<Type, int> map, Iter &it) {

    it = map.find(element);
    if ( it == map.end() ) {
        map.insert(pair<Type, int>(element, 1));
    } else {
        it->second += 1;
    }
}

您可以這樣編寫您的方法:

template <typename Type>
void TextStat::addElement(const Type& element, std::map<Type, int>& m) {
    std::map<Type, int>::iterator it = m.find(element);

    if (it == m.end()) {
        m.insert(std::pair<Type, int>(element, 1));
    } else {
        it->second += 1;
    }
}

甚至更簡單,因為int默認值初始化為0

template <typename Type>
void TextStat::addElement(const Type& element, std::map<Type, int>& m) {
    m[element]++;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM