zoukankan      html  css  js  c++  java
  • 统计输入的单词中有几个长度大于n的,n是自己指定的,用函数对象实现

    #ifndef COUNT_WORD_H
    #define COUNT_WORD_H 
    
    #include <string.h>
    #include <iostream>
    #include <iterator>
    #include <vector>
    #include <algorithm>
    
    class GT_cls{
        public:
            GT_cls(size_t val = 0)
                :bound_(val){}
            bool operator()(const std::string &s){
                return s.size() >= bound_;
            }
        private:
            std::string::size_type bound_;
    };
    
    class Word_count{
        public:
            Word_count(size_t val)
                :GT_(val), wc_(0){}
            void readWord();
            void process();
            void display();
        private:
            static bool isShorter(const std::string &s1, const std::string &s2);
            std::vector<std::string> words_;
            GT_cls GT_;
            size_t wc_;
    };
    
    inline void Word_count::readWord(){
        std::istream_iterator<std::string> cin_it(std::cin);
        std::istream_iterator<std::string> end_of_stream;
        while(cin_it != end_of_stream){
            words_.push_back(*cin_it++);
        }
    }
    
    inline void Word_count::process(){
        sort(words_.begin(), words_.end());
        std::vector<std::string>::iterator end_unique = 
            unique(words_.begin(), words_.end());
        words_.erase(end_unique, words_.end());
        stable_sort(words_.begin(), words_.end(), isShorter);
        wc_ = count_if(words_.begin(), words_.end(), GT_);
    }
    
    inline void Word_count::display(){
        std::cout << "There are " << wc_ << " words." << std::endl;
        for(std::vector<std::string>::iterator it = words_.begin(); it != words_.end(); ++it){
            std::cout << *it << " ";    
        }
        std::cout << std::endl;
    }
    
    inline bool Word_count::isShorter(const std::string &s1, const std::string &s2){
        return s1.size() < s2.size();
    }
    
    #endif  /*COUNT_WORD_H*/

  • 相关阅读:
    Linux 文本编辑器 vim
    Redis 学习(一)
    Linux服务管理
    Linux系统管理
    Linux文件系统管理
    深入解析 composer 的自动加载原理 (转)
    Composer 的学习
    GBDT算法简述
    随机森林入门与实战
    主成分分析PCA
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6771011.html
Copyright © 2011-2022 走看看