Могу ли я использовать уникальную команду в C ++, чтобы получить частоту - PullRequest
1 голос
/ 08 марта 2012

Я хочу получить частоту слов, хранящихся в векторе.Я неоднократно гуглял свой вопрос и не отвечал на вопросы, которые мне подходят.Я нашел сайт, где кто-то говорит использовать команду unique для подсчета частоты слов, но я не могу найти примеры того, как это делается.

Ответы [ 2 ]

6 голосов
/ 08 марта 2012

Используйте <a href="http://cplusplus.com/reference/stl/map/" rel="noreferrer">map</a><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 голос
/ 08 марта 2012

Не использует уникальный, но для подсчета слов трудно превзойти три или любые его производные, как с точки зрения использования памяти, так и скорости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...