关于sort()的问题
class A
{
public:
int a,b;
};
class B
{
public:
double m,n;
}
map<A,B> c;
...
我想把c分别按a,b,m,n的大小排序,该怎么做呀?sort(c.begin(),c.end(),???);
问题点数:50、回复次数:11Top
1 楼ttlb(__ttlb__ttlb__小鸟)回复于 2003-11-01 15:19:35 得分 15
做一个函数对象,类似于:
template <typename T>
class Compare
{
public:
int Compare()(T &lhs, T &rhs)
{
if (lhs < rhs) return -1;
else if (lhs > rhs) return 1;
else return 0;
}
};Top
2 楼zerray(阿然)回复于 2003-11-01 15:25:40 得分 0
还是不太明白,能具体点吗?怎么才能让sort知道按A还是B的成员排序?Top
3 楼xiaonian_3654(你猜猜(我要打光棍,小乔嫁不了))回复于 2003-11-01 16:32:28 得分 0
哎,不要偷懒啊,
先把基本的练好了再说
自己写一写排序,多练Top
4 楼boxban(冻酸梨)回复于 2003-11-01 16:49:00 得分 35
//按照a排序
struct sortAa{
bool operator()(const map<A,B>::const_iterator& l, const map<A,B>::const_iterator& r) const
{
return (l->first.a < r->first.a);
}
};
sort(c.begin(),c.end(),sortAa());Top
5 楼Andy84920(你也不懂)回复于 2003-11-01 17:18:40 得分 0
这个问题不错.
建议写出完整程序!Top
6 楼cxjddd(又是花开时)回复于 2003-11-01 23:08:52 得分 0
呵呵,用 set 怎么样?Top
7 楼WindFroce(半支烟)回复于 2003-11-02 01:18:59 得分 0
大哥,程序写的不好呀,数据应该作为私有的Top
8 楼killme6115(下下雪)回复于 2003-11-02 02:33:33 得分 0
markTop
9 楼zerray(阿然)回复于 2003-11-02 10:30:10 得分 0
to WindForce:
其实我是想用struct的:)Top
10 楼zerray(阿然)回复于 2003-11-02 10:39:04 得分 0
#include<iostream>
#include<map>
#include<algorithm>
using namespace std;
struct A{
int a,b;
};
struct B{
double c,d;
};
struct sortAa{
bool operator()(const map<A,B>::const_iterator& l, const map<A,B>::const_iterator& r) const
{
return (l->first.a < r->first.a);
}
};
int main()
{
map<A,B> c;
A a1,a2;
B b1,b2;
cin>>a1.a>>a1.b>>a2.a>>a2.b;
cin>>b1.c>>b1.d>>b2.c>>b2.d;
c.insert(make_pair(a1,b1));
c.insert(make_pair(a1,b2));
c.insert(make_pair(a2,b1));
c.insert(make_pair(a2,b2));
sort(c.begin(),c.end(),sortAa());
}
这个程序在我的编译器上怎么不能通过编译呢?
1332 F:\Dev-Cpp\include\g++-3\stl_algo.h
no match for `_Rb_tree_iterator<pair<const A,B>,pair<const A,B> &,pair<const A,B> *> & - _Rb_tree_iterator<pair<const A,B>,pair<const A,B> &,pair<const A,B> *> &'
884 F:\Dev-Cpp\include\g++-3\stl_tree.h
instantiated from `_Rb_tree<A,pair<const A,B>,_Select1st<pair<const A,B> >,less<A>,allocator<B> >::insert_unique(const pair<const A,B> &)'
Top
11 楼zerray(阿然)回复于 2003-11-10 20:39:58 得分 0
没人回答我结贴了啊!Top




