2012-03-08 8 views
1

私はベクトルに格納された単語の頻度を取得したいと思います。私は何回も私の質問をGoogleで探検し、私にとってはうまくいくものは行っていません。私は誰かが単語の頻度を数えるためにuniqueコマンドを使用すると言っているサイトを見つけましたが、これがどのように行われたかの例は見つかりません。私はC++でユニークなコマンドを使用して周波数を得ることができます

+0

どのC++ブックをお使いですか? –

+0

[良いタイミング](http://stackoverflow.com/questions/9616929/convert-array-to-new-array) –

+0

私はこのウェブサイト[link](http:// compgroups .net/comp.soft-sys.matlab/Counting-of-Each-Number-of-a-Vector) – bobthemac

答えて

6

histogramを作成するためにmap <string, unsigned>を使用します。

using std::string; 
using std::map; 
using std::vector; 

typedef map<string, unsigned> counts_t; 

// Create the histogram 
counts_t histogram; 
for (vector<string>::const_iterator i = vec.begin(); i != vec.end(); ++i) 
    ++histogram[*i]; 

// ... and display it. 
for (counts_t::const_iterator i = histogram.begin(); i != histogram.end(); ++i) { 
    double freq = static_cast<double>(i->second)/vec.size(); 
    std::cout << i->first << ": " << freq << "\n"; 
} 
+1

頻度はstd :: cout << i->です。<< ": " << i-> second/vec.size()<< "\ n"; – CapelliC

+0

@chac:それはOPが求めていたものです。 –

+0

@chacええ...あなたはもちろん正しい。私は質問を誤解した、すべてです。 –

1

はユニーク使用しませんが、単語をカウントするためには、メモリ使用量の両方の観点から、trieまたはその誘導体のいずれかを打ち負かすのは難しい&速度。

関連する問題