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
32
33
34
35
36
37
38
39
40
41
42
43
|
#include <iostream>
#include <vector>
#include <algorithm>
using
namespace
std;
bool
Compare(
const
int
&a,
const
int
&b)
{
return
a < b;
}
int
main()
{
//typedef bool (*Comp) (const int&, const int&); // 没用
//vector<int, Comp> ivec(Compare); // vector没有这样的构造函数
vector<
int
> ivec;
int
ival;
/*while( cin >> ival)
ivec.push_back(ival);*/
for
(
int
i = 0; i < 5; ++i)
{
cin >> ival;
ivec.push_back(ival);
}
// 假定输入31254
cout <<
"================"
<< endl;
vector<
int
>::iterator it = ivec.begin();
while
(it != ivec.end())
{
cout << *it++ << endl;
}
//会输出:31254
cout <<
"================"
<< endl;
sort(ivec.begin(), ivec.end(), Compare);
// 用algorithm中的sort排序
for
(vector<
int
>::iterator iter = ivec.begin(); iter != ivec.end(); ++iter)
{
cout << *iter << endl;
}
//会输出:12345
return
0;
}
|
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
32
33
34
35
36
37
38
39
40
|
#include <iostream>
#include <string>
#include <map>
using
namespace
std;
class
A
{
public
:
A(
int
num)
{
this
->num = num;
}
bool
operator >(
const
A &a)
const
// 用于比较的操作符">"重载
{
return
(num > a.num);
}
public
:
int
num;
};
int
main(
int
argc,
char
* argv[])
{
map<A, string, greater<A> > mapA;
// 缺省的是用less<Key>,即从小到大排列
// 这里咱们使用greater<Key>,即从大到小排列
mapA.insert(pair<A, string>(A(1),
"Albert"
));
mapA.insert(pair<A, string>(A(2),
"Bob"
));
mapA.insert(pair<A, string>(A(3),
"Chris"
));
// 插入的顺序(从小到大)是1, 2, 3,对应的value分别是Albert、Bob、Chris
for
(map<A, string, greater<A> >::iterator it = mapA.begin(); it != mapA.end(); ++it)
{
cout << it->second << endl;
}
return
0;
}
// 输出的结果(从大到小):
// Chris 对应的Key是A(3)
// Bob 对应的Key是A(2)
// Albert 对应的Key是A(1)
|