排序自定义对象的向量

时间:2016-10-22 15:55:15

标签: c++ sorting object vector

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,但没有帮助。

1 个答案:

答案 0 :(得分:0)

要对排序算法进行排序,需要知道如何比较项std::sort。否则它将使用int的默认比较。您可以为item实现比较运算符(&lt;,&gt;,==)(或为您的项目实现比较类)。