longshen
C++博客
首页
联系
聚合
管理
随笔 - 26 文章 - 6 trackbacks - 0
<
2010年12月
>
日
一
二
三
四
五
六
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(3)
给我留言
查看公开留言
查看私人留言
随笔分类
acm总结(3)
ASP.NET(1)
p2p(1)
poj(7)
VC++(6)
程序员(7)
随笔档案
2011年10月 (1)
2010年12月 (1)
2010年9月 (1)
2010年4月 (4)
2009年11月 (4)
2009年9月 (1)
2009年7月 (5)
2009年5月 (6)
2009年4月 (3)
朋友
cqh
大学室友...
搜索
最新评论
1. re: acm博弈题 -- 个人小结[未登录]
1730用博弈论是怎么做的?
--zj
2. re: acm博弈题 -- 个人小结
楼主,你的博文中有一处错误, ((+)为 按位与)是错的,(+)应该为按位异或
--913614263@qq.com
3. re: 解决 error LNK2019: 无法解析的外部符号 问题
InternetGetCookieA
在用wininet库吧。
--张
4. re: poj 1947 Rebuilding Roads -- 树形DP
good~好代码,膜拜
--czy
5. re: ACM总结 -- 退役贴
ym~
--july
阅读排行榜
1. 解决 error LNK2019: 无法解析的外部符号 问题(50261)
2. ACM总结 -- 退役贴(4787)
3. acm博弈题 -- 个人小结(3085)
4. poj 1947 Rebuilding Roads -- 树形DP(2250)
5. poj 1191 棋盘分割 -- 动态规划(1579)
评论排行榜
1. poj 1947 Rebuilding Roads -- 树形DP(2)
2. acm博弈题 -- 个人小结(2)
3. 解决 error LNK2019: 无法解析的外部符号 问题(1)
4. ACM总结 -- 退役贴(1)
5. Unicode与多字节的基本运用 -- Windows编程(0)
【转】STL中sort的用法举例
转自:
http://blog.csdn.net/whitefoxx/archive/2010/07/03/5710848.aspx
对象数组排序这里展示了两种方法,定义比较函数或通过重载比较运算符使得类本身是可以比较的,就像基本类型一样。
定义比较函数,既可以通过定义比较运算符(如operator <),也可以直接定义函数(如compare)。
重载运算符之后,可以在sort函数中通过less或greater或less_equal等来调整升序还是降序,默认是升序。
另外,重载运算符后,函数bool operator < 就不要了,否则用g++编译出错。
#include
<
algorithm
>
#include
<
iostream
>
#include
<
vector
>
using
namespace
std;
class
MyClass
{
public
:
int
id;
MyClass()
{}
MyClass(
int
i): id( i )
{}
bool
operator
<
(
const
MyClass
&
b )
const
{
return
id
<
b.id;
}
bool
operator
>
(
const
MyClass
&
b )
const
{
return
id
>
b.id;
}
}
;
/**/
/*
bool operator < ( MyClass a, MyClass b )
{
return a.id < b.id;
}
*/
bool
compare( MyClass a, MyClass b )
{
return
a.id
<
b.id;
}
int
main()
{
//
数组
cout
<<
"
数组
"
<<
endl;
MyClass arr[
10
];
srand(time(NULL));
for
(
int
i
=
0
; i
<
10
; i
++
)
arr[i].id
=
rand()
%
101
;
cout
<<
"
before sort
"
<<
endl;
for
(
int
i
=
0
; i
<
10
; i
++
)
cout
<<
arr[i].id
<<
endl;
sort(arr,arr
+
10
,less
<
MyClass
>
());
cout
<<
"
after sort
"
<<
endl;
for
(
int
i
=
0
; i
<
10
; i
++
)
cout
<<
arr[i].id
<<
endl;
//
动态数组vector
cout
<<
"
动态数组vector
"
<<
endl;
vector
<
MyClass
>
list;
for
(
int
i
=
0
; i
<
10
; i
++
)
list.push_back( MyClass( rand()
%
101
) );
cout
<<
"
before sort
"
<<
endl;
for
(
int
i
=
0
; i
<
10
; i
++
)
cout
<<
list[i].id
<<
endl;
sort(list.begin(),list.end(),greater
<
MyClass
>
());
cout
<<
"
after sort
"
<<
endl;
for
(
int
i
=
0
; i
<
10
; i
++
)
cout
<<
list[i].id
<<
endl;
//
定义比较函数
cout
<<
"
定义比较函数
"
<<
endl;
vector
<
MyClass
>
list2;
for
(
int
i
=
0
; i
<
10
; i
++
)
list2.push_back( MyClass( rand()
%
101
) );
cout
<<
"
before sort
"
<<
endl;
for
(
int
i
=
0
; i
<
10
; i
++
)
cout
<<
list2[i].id
<<
endl;
sort(list2.begin(),list2.end(),compare);
cout
<<
"
after sort
"
<<
endl;
for
(
int
i
=
0
; i
<
10
; i
++
)
cout
<<
list2[i].id
<<
endl;
//
使得类本身就是可以比较的
cout
<<
"
使得类本身就是可以比较的
"
<<
endl;
vector
<
MyClass
>
list3;
for
(
int
i
=
0
; i
<
10
; i
++
)
list3.push_back( MyClass( rand()
%
101
) );
cout
<<
"
before sort
"
<<
endl;
for
(
int
i
=
0
; i
<
10
; i
++
)
cout
<<
list3[i].id
<<
endl;
sort(list3.begin(),list3.end());
cout
<<
"
after sort
"
<<
endl;
for
(
int
i
=
0
; i
<
10
; i
++
)
cout
<<
list3[i].id
<<
endl;
return
0
;
}
posted on 2010-12-08 20:46
longshen
阅读(1232)
评论(0)
编辑
收藏
引用
所属分类:
VC++
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
【转】STL中sort的用法举例
解决 error LNK2019: 无法解析的外部符号 问题
第3章 内核对象 -- Windows核心编程
Unicode与多字节的基本运用 -- Windows编程
SDK之文件API
内存不够处理 -- new_handler
网站导航:
博客园
IT新闻
BlogJava
博问
Chat2DB
管理