統計單詞個數 並按照出現次數/輸入順序輸出 (statistics words count,output by occurrence count order or appearance order)

 

template<typename ty,bool flage>

void sort_string_map_name() {

    std::chrono::high_resolution_clock::time_point begin = std::chrono::high_resolution_clock::now();

    using map_type = ty;

    map_type map_name;

    std::vector<map_type::iterator> vec_iter_name;

    std::string name;

    std::vector<std::string> arrayname{"ff","ab","ca","ff","bb","aa","ca",

    "we","sg","absd","wege","awe","sdg23","2gds","232gsd","2323","23sdg2323","2gsdg23"};

    for(auto &name : arrayname) {

        auto it = map_name.insert({name,1});

        if(!it.second)

            it.first->second++;

        else

            vec_iter_name.push_back({it.first});

    }

    if(flage) {

    std::sort(vec_iter_name.begin(),vec_iter_name.end(),[](const map_type::iterator lit,const map_type::iterator rit){

        if(lit->second == rit->second)

            return lit->first < rit->first;

        return lit->second < rit->second;

    });

    }

    std::for_each(vec_iter_name.begin(),vec_iter_name.end(),[](const map_type::iterator iter) {

        std::cout<<"name: "<<iter->first<<" count:"<<iter->second<<std::endl;

    });

 

    std::chrono::high_resolution_clock::time_point end = std::chrono::high_resolution_clock::now();

    std::chrono::milliseconds duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - begin);

    std::cout<<"map duration : "<<duration.count()<<std::endl;

}

 

int main() {

    sort_string_map_name<std::map<std::string,int>,false>();

    sort_string_map_name<std::unordered_map<std::string,int>,false>();

 

    sort_string_map_name<std::map<std::string,int>,true>();

    sort_string_map_name<std::unordered_map<std::string,int>,true>();

 

    return 0;

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章