【问题标题】:Sort Vector based on Variable In Class [duplicate]基于类中的变量对向量进行排序[重复]
【发布时间】:2014-06-07 18:45:43
【问题描述】:

有没有办法使用具有 int 变量的类对向量进行排序?我想让我的矢量在控制台中排序和打印。

假设我有这个向量vector<PCB> Disks2;

我有这门课

class PCB
{
public:
    void setPID (int a)
    {
        PID = a;
    }
    int retrievePID()
    {
        return PID;
    }
    void setFilename (string input)
    {
        Filename = input;
    }
    string retrieveFilename()
    {
        return Filename;
    }
    void setMemstart (int a)
    {
        Memstart = a;
    }
    int retrieveMemstart()
    {
        return Memstart;
    }
    void setRW (char a)
    {
        rw = a;
    }
    char retrieveRW()
    {
        return rw;
    }
    void setFilelength (int input)
    {
        Filelength = input;
    }
    int retrieveFilelength()
    {
        return Filelength;
    }
    int retrieveCylinder()
    {
        return Cylinder;
    }
    void setCylinder (int a)
    {
        Cylinder = a;
    }

private:
    int PID;
    string Filename;
    int Memstart;
    char rw;
    int Filelength;
    int Cylinder;
};

如何根据 Cylinder int 对该向量进行排序?我希望 Vector 根据 Cylinder 组织信息的顺序?这可能吗?我想不通。

【问题讨论】:

    标签: c++ sorting vector


    【解决方案1】:
    std::sort(Disks2[QueueNumber-1].begin(),Disks2[QueueNumber-1].end(),[](PCB a,PCB b){ return (a.retrieveCylinder()>b.retrieveCylinder());});
    

    这应该可以正常工作。 注意:别忘了

    #include <algorithm>
    

    【讨论】:

    • 我收到错误预期;在 } 令牌之前
    • 查看编辑,我忘了提到分号
    • 我根据需要修改了代码并输入了sort(Disks2[QueueNumber-1].begin(),Disks2[QueueNumber-1].end(),[](PCB a,PCB b) { return (a.retrieveCylinder()&gt;b.retrieveCylinder()); });,但现在我收到了这个错误。 error: no matching function for call to 'sort(std::vector&lt;PCB&gt;::iterator, std::vector&lt;PCB&gt;::iterator, main()::&lt;lambda(PCB, PCB)&gt;)'
    猜你喜欢
    • 2015-06-22
    • 1970-01-01
    • 2013-10-15
    • 2013-08-09
    • 2016-07-07
    • 2016-09-19
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多