c++ - 如何找到文本文档中最长的单词?

标签 c++ boost stl


我正在寻找一种使用 STL 和 boost 在文本文档中查找最长单词(基于长度)的方法。 这是我的解决方案。然而,它一点也不好,有太多的操作(token,sort ..)。有没有更简单的方法来解决这个问题?

// utility and memory
#include <utility>
#include <functional>
#include <memory>

#include <locale>
#include <string>

// data structure and algorithm
#include <stack>
#include <vector>
#include <list>
#include <set>
#include <map>
#include <deque>
#include <list>
#include <bitset>
#include <algorithm>
#include <iterator>
// numeric 
#include <complex>
#include <numeric>
#include <valarray>

// input/output
#include <iostream>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <streambuf>
#include <sstream>

// standard C
#include <cctype>
#include <cmath>
#include <climits>
#include <cstdlib>
#include <ctime>
#include <cassert>
#include <cstring>

// boost
#include <boost/tokenizer.hpp>

int main() {
    std::string str = "Test, test!, test...string";
    boost::char_separator<char> sep( ",!,.-" );
    boost::tokenizer<boost::char_separator<char> > tokens( str, sep );
    std::vector<std::string> res;
    std::copy( tokens.begin(), tokens.end(), std::back_inserter( res ) );
    std::sort( res.begin(), res.end(), []( const std::string& l, const std::string& r ) { return l.length() > r.length(); } );
    std::cout << "longest : " << *res.begin() << "\n";
    return 0;
} 

最诚挚的问候,

最佳答案

您可以使用std::max_element 。只需给它迭代器对和您已经编写的比较器即可。

关于c++ - 如何找到文本文档中最长的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4578249/

相关文章:

c++ - 是否可以将 C/C++ 源代码转换为汇编代码?

c++ - 按像素访问 linux 的终端

c++ - boost::numeric::quadrature 或 gsl quadrature 中的加权函数

c++ - vector::at 与 vector::operator[]

C++ 程序在 Visual Studio v.6 中挂起

c++ - Qt 4 - QProcess 问题

c++ - boost streambuf 并编写奇怪的行为

c++ - 未定义引用 boost::program_options::abstract_variables_map::operator[]

c++ - C++ STL中set的 'insert'函数的原理是什么?

c++ - std::map 的类型要求