我想创建一个模板方法,用于独立于元素类型来添加和计数地图(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]++;
}

10-04 21:54
查看更多