【发布时间】:2011-05-13 09:50:22
【问题描述】:
我想做一个可以计算唯一单词的函数。例如:
“我喜欢编程一些有用的东西。我喜欢吃东西。现在吃冰淇淋。”
在这种情况下,每个唯一的词:
I occurs 2
like occurs 2
...
稍后我将忽略此案。请帮忙
编辑:
我已经完成了函数的编写。它完美地工作。感谢所有的帮助。非常感谢。
【问题讨论】:
标签: c++ function word-count
我想做一个可以计算唯一单词的函数。例如:
“我喜欢编程一些有用的东西。我喜欢吃东西。现在吃冰淇淋。”
在这种情况下,每个唯一的词:
I occurs 2
like occurs 2
...
稍后我将忽略此案。请帮忙
编辑:
我已经完成了函数的编写。它完美地工作。感谢所有的帮助。非常感谢。
【问题讨论】:
标签: c++ function word-count
听起来您想使用带有键字符串和 int 数据的 std::map。
如果地图中已不存在某个项目,则将其添加为 int 值 1。如果该项目已存在于地图中,则只需将 1 添加到其关联值。
【讨论】:
我会把它当作一个家庭作业问题(希望没有人会如此轻率地提供完整的代码)。
如果您对“单词”的定义非常松散感到满意,那么 iostream 输入已经为您将输入拆分为单词。
然后使用例如std::map 统计不同的单词。
干杯,
【讨论】:
std::map 或任何其他标准库结构的示例,请参阅cplusplus.com/reference
这是了解迭代器和标准算法的绝佳机会。
std::istream_iterator 迭代从给定流中提取的单词列表,std::cin 或文件或字符串。
std::unique 可以帮助您实现目标。
示例程序:
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main()
{
istream_iterator<string> begin(cin), end;
vector<string> tmp;
copy(begin, end, back_inserter(tmp));
sort(tmp.begin(), tmp.end());
vector<string>::iterator it = unique(tmp.begin(), tmp.end());
cout << "Words:\n";
copy(tmp.begin(), it, ostream_iterator<string>(cout));
}
有关标准库的进一步参考,请参阅http://www.cplusplus.com。
【讨论】: