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 に答える