C++ C+中的唯一字数+;帮忙?
我想做一个功能,可以计算独特的话。例如: “我喜欢编写一些有用的程序。我喜欢吃。现在就吃冰淇淋。” 在这种情况下,每个独特的词:C++ C+中的唯一字数+;帮忙?,c++,function,word-count,C++,Function,Word Count,我想做一个功能,可以计算独特的话。例如: “我喜欢编写一些有用的程序。我喜欢吃。现在就吃冰淇淋。” 在这种情况下,每个独特的词: I occurs 2 like occurs 2 ... 稍后我将忽略这个案例。请帮忙 编辑: 我已经完成了函数的编写。它工作得很好。谢谢你的帮助。非常感谢。听起来您希望使用带有键字符串和int数据的 如果某个项目在地图中不存在,则将其添加为int值1。如果该项目已经存在于地图中,您只需在其关联值中添加1即可。我会将其视为一个家庭作业问题(希望没有人会如此轻率地给出
I occurs 2
like occurs 2
...
稍后我将忽略这个案例。请帮忙
编辑:
我已经完成了函数的编写。它工作得很好。谢谢你的帮助。非常感谢。听起来您希望使用带有键字符串和int数据的
如果某个项目在地图中不存在,则将其添加为int值1。如果该项目已经存在于地图中,您只需在其关联值中添加1即可。我会将其视为一个家庭作业问题(希望没有人会如此轻率地给出完整的代码) 如果您对“单词”的定义非常宽松,那么iostream输入已经为您将输入拆分为单词 然后使用例如
std::map
来计算不同的单词
干杯,这是一个了解迭代器和标准算法的绝佳机会 在从给定流中提取的单词列表上有一个循环,可以是
std::cin
,也可以是一个文件或字符串
有很多方法可以帮助你实现目标
示例程序:
#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));
}
#包括标准库以供进一步参考。我明白了。如果我用的是地图,我以后能把它整理出来吗?如按频率排序,如果我的场景与此类似,请您指导我:。我非常需要它urgent@cpp_learner:如果你对其他方面不确定,你可以提出另一个问题,问什么让你困惑。@Brian R.Bond:你不能对std::map进行排序。不过,您可以使用自定义排序函数对其进行实例化。当您第一次访问索引时,它将被初始化为零。所以简单的解决方案就是总是1oh-ya,我不希望有完整的代码。一个使用map等的示例代码就可以了。以后我会自己去探索更多on@cpp_learner例如,如何使用<代码> STD::MAP<代码>或C++中的任何其他STD库构造,请看好的尝试:但是ISTRESAMIATIORATER将单词定义为空间分隔。这在大多数情况下都很好。但在这里,标点符号将发挥作用。还有,当地图自动排序和计算输入的内容时,为什么要使用矢量呢。