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*/

  • 相关阅读:
    npm、webpack、vue-cli 快速上手版
    jquery 显示和隐藏的三种方式
    jquery好友面板切换
    jquery 事件冒泡
    jquery QQ微博
    C# Thread 参数
    WPF Dispatcher的使用
    UVa 1600 Patrol Robot (BFS最短路 && 略不一样的vis标记)
    HDU 2795 Billboard (线段树单点更新 && 求区间最值位置)
    HDU 1394 Minimum Inversion Number (树状数组 && 规律 && 逆序数)
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6771011.html
Copyright © 2011-2022 走看看