bool operator()(point a, point b){
       return a.x<b.x;
 }

remove references it should work. following is working code.
#include<iostream>
#include<algorithm>
#include<vector>

using namespace std;


typedef struct
{
 int x;
 int y;
}point;

struct comp_x
{
 bool operator()(point a, point b){
       return a.x<b.x;
 }
} compx;

struct comp_y
{
 bool operator()(point a, point b){
      return a.y<b.y;
 }
} compy;

int main()
{
 vector<point> vc;
 int n;
 cin>>n;
 point a;

 for(int i=0;i<n;i++)
 {
  cin>>a.x;
  cin>>a.y;
  vc.push_back(a);
 }
 cout<<endl;

 sort(vc.begin(), vc.end(), compx);
 cout<<"By X\n";
 for(int i=0;i<n;i++)
 {
  cout<<vc[i].x<<" "<<vc[i].y<<endl;
 }
 sort(vc.begin(), vc.end(), compy);
cout<<"By Y\n";
for(int i=0;i<n;i++)
 {
  cout<<vc[i].x<<" "<<vc[i].y<<endl;
 }

 return 0;
}


On Wed, Aug 10, 2011 at 6:31 PM, aanchal goyal <goyal.aanch...@gmail.com>wrote:

> sorry, comp is either comp_x or comp_y
>
>
> On Wed, Aug 10, 2011 at 6:24 PM, Nitin Nizhawan 
> <nitin.nizha...@gmail.com>wrote:
>
>> what is "comp" in your code?
>>
>>
>> On Wed, Aug 10, 2011 at 6:19 PM, aanchal goyal 
>> <goyal.aanch...@gmail.com>wrote:
>>
>>> I have a vector of stuct, how to sort this vector?
>>> problem is I can't overload the '<' operator in struct definition, as i
>>> want to sort by 'x' one time, and then by 'y'. I tried to write the
>>> comparator function separatley but its no working. How to do it?
>>>
>>> #include<iostream>
>>> #include<algorithm>
>>> #include<vector>
>>>
>>> using namespace std;
>>>
>>>
>>> typedef struct
>>> {
>>>  int x;
>>>  int y;
>>> }point;
>>>
>>> struct comp_x
>>> {
>>>  bool operator()(point &a, point &b)
>>>       return a.x<b.x;
>>> }
>>>
>>> struct comp_y
>>> {
>>>  bool operator()(point &a, point &b)
>>>       return a.y<b.y;
>>> }
>>>
>>> int main()
>>> {
>>>  vector<point> vc;
>>>  int n;
>>>  cin>>n;
>>>  point a;
>>>
>>>  for(int i=0;i<n;i++)
>>>  {
>>>   cin>>a.x;
>>>   cin>>a.y;
>>>   vc.push_back(a);
>>>  }
>>>  cout<<endl;
>>>  sort(vc.begin(), vc.end(), comp);
>>>
>>>  for(int i=0;i<n;i++)
>>>  {
>>>   cout<<vc[i].x<<" "<<vc[i].y<<endl;
>>>  }
>>>
>>>  system("pause");
>>>  return 0;
>>> }
>>>
>>>
>>> --
>>> Regards,*
>>> Aanchal Goyal*.
>>>
>>>  --
>>> You received this message because you are subscribed to the Google Groups
>>> "Algorithm Geeks" group.
>>> To post to this group, send email to algogeeks@googlegroups.com.
>>> To unsubscribe from this group, send email to
>>> algogeeks+unsubscr...@googlegroups.com.
>>> For more options, visit this group at
>>> http://groups.google.com/group/algogeeks?hl=en.
>>>
>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "Algorithm Geeks" group.
>> To post to this group, send email to algogeeks@googlegroups.com.
>> To unsubscribe from this group, send email to
>> algogeeks+unsubscr...@googlegroups.com.
>> For more options, visit this group at
>> http://groups.google.com/group/algogeeks?hl=en.
>>
>
>
>
> --
> Regards,*
> Aanchal Goyal*.
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to algogeeks@googlegroups.com.
> To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to