class hash
{
private:
static const int tableSize = 1000;
struct item
{
string name;
unsigned int reps;
item* next;
};
item* HashTable[tableSize];
}
В моей программе я построил свою хэш-таблицу с этой структурой, и я использую цепочку. Эти элементы содержат очень похожие строки и целую переменную с ними, сохраняя, сколько раз они встречаются в текстовом файле. Я хочу написать функцию для печати наиболее часто используемых строк K в контексте.сортировочные векторы пользовательских объектов
void PrintTopFrequentList(int K);
В результате получившийся хеш-стол на самом деле очень большой, может быть, 100.000 записей? То, что я получил до сих пор это ...
void hash::PrintTopFrequentList(int length)
{
vector<item*> row;
vector<item*> sorted;
int no;
for (int i = 0 ; i<tableSize ; i++)
{
item* Ptr= HashTable[i];
while (Ptr->next!=NULL)
{
row.push_back(Ptr);
Ptr=Ptr->next;
}
sort(row.begin(),row.end());
sorted.insert(sorted.end(), row.begin(),row.end());
sort(sorted.begin(),sorted.end());
}
Мои проблемы, в первую очередь тех sort
функций в конце PrintTopFreq
. Функция не работает, после цикла for я добавляю эту часть для управления сортировкой, но она не работает.
Что мне действительно нужно сделать, так это настроить эту функцию сортировки так, чтобы мой вектор результатов находился в порядке убывания. Я попытался перегрузить некоторые функции внутри определения класса. Я смотрел с других сообщений, но не мог заставить его работать.
Я пробовал читать this post, но это не помогло.
Умм, может быть, вы могли бы просто отсортировать на итераторах с обратной связью? 'sort (row.rbegin(), row.rend())'? –
только вопрос, который я могу заметить, это «... 100.000 записей?» как мы должны знать? : P Просьба описать, что привело вас к выводу, что он не работает, потому что «doesnt work» может означать что угодно – user463035818
sort (row.rbegin(), row.rend()) сделал вспять список Im, чтобы управлять, но все же я у меня нет отсортированного списка от 11114111211111 до 111112111411111 например – methodp