Уникальное количество слов в C ++ поможет? - PullRequest
2 голосов
/ 21 ноября 2010

Я хотел бы сделать функцию, которая может считать уникальные слова. Например:

«Мне нравится программировать что-то полезное. И я люблю есть. Ешьте мороженое сейчас».

В данном случае каждое уникальное слово:

I occurs 2
like occurs 2
...

Я проигнорирую это дело позже. Пожалуйста, помогите

EDIT:

Я закончил писать функции. Работает отлично. Спасибо за помощь. Очень ценится.

Ответы [ 3 ]

2 голосов
/ 21 ноября 2010

Похоже, вы хотите использовать std :: map с ключевой строкой и данными типа int.

Если элемент не существует на карте, вы добавляете его со значением int, равным 1. Если элемент уже существует на карте, вы просто добавляете 1 к соответствующему значению.

1 голос
/ 21 ноября 2010

Отличная возможность познакомиться с итераторами и стандартными алгоритмами.

Существует 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 для дальнейшей ссылки на стандартную библиотеку.

1 голос
/ 21 ноября 2010

Я буду относиться к этому как к домашнему заданию (надеюсь, никто не будет настолько бездумным, чтобы представить полный код).

Если вы довольны очень свободным определением слова, то ввод iostream уже разбивает ввод на слова для вас.

Тогда используйте, например, std::map для подсчета отдельных слов.

Приветствия & hth.,

...