首页 > 代码库 > 统计输入的单词中有几个长度大于n的,n是自己指定的,用函数对象实现
统计输入的单词中有几个长度大于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*/
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。