Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
StereoMuse
0 / 0 / 0
Регистрация: 18.11.2011
Сообщений: 9
#1

C++ priority_queue< int , char*, CompareHeap1 > pqMax (создать очередь с приоритетом для поиска 10 наиболее и наименее часто встречающихся слов) - C++

21.05.2013, 11:24. Просмотров 1078. Ответов 3
Метки нет (Все метки)

Выполняю задачу "Частотный словарь", необходимо создать очередь с приоритетом для поиска 10 наиболее и наименее часто встречающихся слов.
Использую такой метод для записи в очередь:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/* структура для очереди с приоритетом - max */
struct CompareHeap1 {
    bool operator() (heapPair h1, heapPair h2) {
        return (h1.num >= h2.num);
    }
};
/* структура для очереди с приоритетом - min */
struct CompareHeap2 {
    bool operator() ( heapPair h1, heapPair h2) {
        return (h1.num <= h2.num);
    }
};
 
void main(){
priority_queue< int , char*, CompareHeap1 > pqMax;  //очередь с приоритетом(max)
    int i = 0;
    while (i <= hp.size()-1)  //записываем в очередь с приоритетом
    {
        char* w = hp[i].data;
        pqMax.push(w);
        i++;
    }
    //выдаем результат(max)
    cout<< "10 words with max frequency:"<< endl;
    for (int ten=1;ten<=10;ten++) {
        cout<< pqMax.top()<< "      ";
        pqMax.pop();
    }
 
    priority_queue< int , char*, CompareHeap2 > pqMin;  //очередь с приоритетом(min)
    int j = 0;
    while (j <= hp.size()-1)  //записываем в очередь с приоритетом
    {
        char* w = hp[j].data;
        pqMin.push(w);
        j++;
    }
    //выдаем результат(min)
    cout<< "10 words with min frequency:"<< endl;
    for (int tent=1;tent<=10;tent++) {
        cout<< pqMin.top()<< "      ";
        pqMin.pop();
    }
    system("pause");
}
Выдаем огромную кучу ошибок, типа:
c:\program files (x86)\microsoft visual studio 10.0\vc\include\queue(218): error C2825: _Container: должен представлять класс или пространство имен с последующим "::"
c:\program files (x86)\microsoft visual studio 10.0\vc\include\queue(218): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "value_type"
c:\program files (x86)\microsoft visual studio 10.0\vc\include\queue(218): error C2602: std:: priority_queue<_Ty,_Container,_Pr>::value_type не является членом базового класса "std:: priority_queue<_Ty,_Container,_Pr>"
1> with
1> [
1> _Ty=int,
1> _Container=char *,
1> _Pr=CompareHeap1
1> ]
(полный список в прикрепленном файле)

Помогите разобраться...
Вложения
Тип файла: txt ошибки.txt (13.1 Кб, 4 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2013, 11:24     C++ priority_queue< int , char*, CompareHeap1 > pqMax (создать очередь с приоритетом для поиска 10 наиболее и наименее часто встречающихся слов)
Посмотрите здесь:

C++ Найти количество элементов, наиболее часто встречающихся в массиве
Получить 10 наиболее часто встречающихся букв и число их появления из текстового файла C++
C++ 20 наиболее часто встречающихся слов
C++ Дан непустой массив из цифр. Вывести на экран цифру наиболее часто встречающихся в этом массиве.
C++ Создать очередь с приоритетом (Ошибка)
Поиск наиболее часто встречающихся слов в файле C++
Получить 10 наиболее часто встречающихся слов из файла C++
C++ Задача по STL (Создать объект-контейнер, очередь с приоритетом, заполнить ее данными, тип char)
C++ Перевод с C# на С++ (в заданном тексте найти 20 наиболее часто встречающихся слов с указанием количества использования каждого из них)
C++ Очередь с приоритетом. Элементы с наивысшим приоритетом ставятся в начало очереди, с наименьшим – в конец
Получить 10 наиболее часто встречающихся слов в файле C++
Вывести 10 наиболее часто встречающихся чисел C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nexen
21.05.2013, 11:42
  #2

Не по теме:

Всё никак не могу понять, как люди пишут осмысленный код с использованием не самых легкий (с некоторой точки зрения) контейнеров, но при этом, получая ошибки билда, в шоковом состоянии бегут на форум не зная что делать с "отсутствие ";"". Кто-нибудь, пожалуйста, объясните, как это? >_<

StereoMuse
0 / 0 / 0
Регистрация: 18.11.2011
Сообщений: 9
21.05.2013, 11:47  [ТС]     C++ priority_queue< int , char*, CompareHeap1 > pqMax (создать очередь с приоритетом для поиска 10 наиболее и наименее часто встречающихся слов) #3
nexen, это не моя инициатива - задание в институте. Если вы такой(ая) образованный(ая), почему бы не помочь?
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
21.05.2013, 11:49     C++ priority_queue< int , char*, CompareHeap1 > pqMax (создать очередь с приоритетом для поиска 10 наиболее и наименее часто встречающихся слов) #4
StereoMuse, http://www.cplusplus.com/reference/q...priority_queue
Прочитай про второй параметр. Это не char*, как у тебя.
Yandex
Объявления
21.05.2013, 11:49     C++ priority_queue< int , char*, CompareHeap1 > pqMax (создать очередь с приоритетом для поиска 10 наиболее и наименее часто встречающихся слов)
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru