一意の単語をカウントできる機能を実行したいと考えています。例えば:
「役に立つことをプログラムするのが好きです。そして食べるのが好きです。今すぐアイスクリームを食べてください。」
この場合、それぞれの固有の単語:
I occurs 2
like occurs 2
...
この件は後ほど無視します。助けてください
編集:
関数を書き終えました。それは完全に機能します。すべての助けをありがとう。非常に高く評価。
一意の単語をカウントできる機能を実行したいと考えています。例えば:
「役に立つことをプログラムするのが好きです。そして食べるのが好きです。今すぐアイスクリームを食べてください。」
この場合、それぞれの固有の単語:
I occurs 2
like occurs 2
...
この件は後ほど無視します。助けてください
編集:
関数を書き終えました。それは完全に機能します。すべての助けをありがとう。非常に高く評価。
キー文字列と int のデータで std::mapを使用したいようです。
アイテムがマップにまだ存在しない場合は、int 値 1 で追加します。アイテムがマップに既に存在する場合は、関連付けられた値に 1 を追加するだけです。
私はこれを宿題の質問として扱います (完全なコードを提示するほど軽率な人がいないことを願っています)。
「単語」の非常に大まかな定義に満足している場合は、iostream 入力が既に入力を単語に分割しています。
次に、egstd::map
を使用して個別の単語を数えます。
乾杯 & hth.,
イテレータや標準アルゴリズムに慣れる絶好の機会です。
ファイルまたは文字列の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を参照してください。