2

我想做一个可以计算唯一单词的功能。例如:

“我喜欢编程一些有用的东西。我喜欢吃东西。现在吃冰淇淋。”

在这种情况下,每个唯一的词:

I occurs 2
like occurs 2
...

稍后我将忽略此案。请帮忙

编辑:

我已经完成了函数的编写。它完美地工作。感谢所有的帮助。非常感谢。

4

3 回答 3

2

听起来您想使用带有键字符串和 int 数据的 std::map 。

如果地图中已不存在某个项目,则将其添加为 int 值 1。如果该项目已存在于地图中,则只需将 1 添加到其关联值。

于 2010-11-21T14:41:54.270 回答
1

我会将其视为一个家庭作业问题(希望没有人会如此轻率地提供完整的代码)。

如果您对“单词”的定义非常松散感到满意,那么 iostream 输入已经为您将输入拆分为单词。

然后使用 egstd::map来计算不同的单词。

干杯&hth.,

于 2010-11-21T14:43:52.643 回答
1

这是了解迭代器和标准算法的绝佳机会。

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

于 2010-11-21T14:50:33.567 回答