zoukankan      html  css  js  c++  java
  • 字符串中统计单词个数

    用到的几个小知识

    1.字符串流是以空格作为一个字符串的结束标志,采用stringstream来提取单词。

    2.为了消除重复单词,需要先将vector排序,使得重复的单词相邻出现,不先排序无法正确“删除”重复元素

    3.使用unique STL算法来重排vector,使得不重复的元素出现在vector的开始部分。

    代码如下:

    #include "stdafx.h"
    #include <string.h>
    #include <algorithm>
    #include <vector>
    #include <deque>
    #include <functional>
    #include <iostream>
    #include <list>
    #include <sstream>
    #include <iterator>
    #include <functional>
    
    using namespace std;
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    
    	stringstream ss;
    	string str = "the quick red fox jumps over the slow red turtle";
    	string strWord;
    	vector<string> vecWords;
    
    	ss.clear();
    	ss.str(str);
    	while (ss >> strWord)
    	{
    		vecWords.push_back(strWord);
    		strWord.clear();
     	}
    	
    	cout << "sort before:" << endl;
    	copy(vecWords.begin(), vecWords.end(), ostream_iterator<string>(cout, " "));
    	cout << endl;
    
    	cout << "sort after and unique before:" << endl;
    	
    	//从大到小排序
    	//sort(vecWords.begin(), vecWords.end(),greater<string>());
    	//默认是从小大的字典排序
    	sort(vecWords.begin(), vecWords.end());
    	copy(vecWords.begin(), vecWords.end(), ostream_iterator<string>(cout, " "));
    	cout << endl;
    	
    	vector<string> vecWordsBackup(vecWords);
    
    	cout << "sort and unique afer:" << endl;
    	unique(vecWords.begin(),vecWords.end());
    	copy(vecWords.begin(), vecWords.end(), ostream_iterator<string>(cout, " "));
    	cout << endl;
    
    	cout << "sort and unique and erase after:" << endl;
    	vecWordsBackup.erase(unique(vecWordsBackup.begin(),vecWordsBackup.end()), vecWordsBackup.end());
    	copy(vecWordsBackup.begin(), vecWordsBackup.end(), ostream_iterator<string>(cout, " "));
    	cout << endl;
    
    	cout << "total words:"<<vecWordsBackup.size() <<endl;
    
    	return 0;
    }


    运行结果:



  • 相关阅读:
    第8月第15天 app支持后台播放
    第8月第12天 python json.dumps danmu
    第7月第27天 c++11 boost
    第7月第26天 iOS httpserver
    第7月第25天 xcode bundle calayer动画
    我曾七次鄙视自己的灵魂
    learning shell display alert function(5)
    learning armbian steps(6) ----- armbian 源码分析(一)
    learning scala 数组和容器
    learning scala ide tools install
  • 原文地址:https://www.cnblogs.com/jinxiang1224/p/8468433.html
Copyright © 2011-2022 走看看