0

Is there a way to sort a vector with a class that has an int variable? I want to have my vector sorted and printed in console.

Say i have this vector vector<PCB> Disks2;

And i have this class

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;
};

How can i sort that vector based on the Cylinder int? I want the Vector to organize the order of the information based on Cylinder? Is this possible? I cant figure it out.

tyrone 251
  • 355
  • 1
  • 4
  • 14

1 Answers1

3
std::sort(Disks2[QueueNumber-1].begin(),Disks2[QueueNumber-1].end(),[](PCB a,PCB b){ return (a.retrieveCylinder()>b.retrieveCylinder());});

This should work fine. Note: don't forget to

#include <algorithm>
deeiip
  • 3,319
  • 2
  • 22
  • 33
  • I am getting error expected ; before } token – tyrone 251 Apr 23 '14 at 06:00
  • see the edit, i forgot to mention the semi colon – deeiip Apr 23 '14 at 06:11
  • I modified my code for my needs and put `sort(Disks2[QueueNumber-1].begin(),Disks2[QueueNumber-1].end(),[](PCB a,PCB b) { return (a.retrieveCylinder()>b.retrieveCylinder()); });` but now im getting this error. `error: no matching function for call to 'sort(std::vector::iterator, std::vector::iterator, main()::)'` – tyrone 251 Apr 23 '14 at 06:18