博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STL中比较自定义类/结构体(map)
阅读量:6319 次
发布时间:2019-06-22

本文共 1417 字,大约阅读时间需要 4 分钟。

 按年龄比较Person的大小,直接上代码。

方式一(适用于自定义类型):

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
#include <iostream>
#include <string>
#include <map>
using 
namespace 
std;
struct 
Person
{
    
Person(string name, 
int 
age)
    
{
        
this
->name = name;
        
this
->age = age;
    
}
    
string name;
    
int 
age;
    
bool 
operator < (
const 
Person &p1) 
const
    
{
        
return 
this
->age < p1.age;
    
}
};
int 
main()
{
    
map<Person, string> mm = {
            
{Person(
"Alice"
, 34), 
"girl"
},
            
{Person(
"Tom"
, 23), 
"boy"
},
            
{Person(
"Joey"
, 45), 
"boy"
}
        
};
    
for 
(
const 
auto 
&p : mm)
    
{
        
cout << p.first.name << 
" * " 
<< p.first.age << 
" * " 
<< p.second << endl;
    
}
    
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
#include <iostream>
#include <string>
#include <map>
using 
namespace 
std;
struct 
Person
{
    
Person(string name, 
int 
age)
    
{
        
this
->name = name;
        
this
->age = age;
    
}
    
string name;
    
int 
age;
};
struct 
ltPerson
{
    
bool 
operator()(
const 
Person &p1, 
const 
Person &p2) 
const
    
{
        
return 
p1.age < p2.age;
    
}
};
int 
main()
{
    
map<Person, string, ltPerson> mm = {
            
{Person(
"Alice"
, 34), 
"girl"
},
            
{Person(
"Tom"
, 23), 
"boy"
},
            
{Person(
"Joey"
, 45), 
"boy"
}
        
};
    
for 
(
const 
auto 
&p : mm)
    
{
        
cout << p.first.name << 
" * " 
<< p.first.age << 
" * " 
<< p.second << endl;
    
}
    
return 
0;
}

运行截图:

*** walker ***

本文转自walker snapshot博客51CTO博客,原文链接http://blog.51cto.com/walkerqt/1324824如需转载请自行联系原作者
RQSLT
你可能感兴趣的文章
kingshard最佳实践(一)
查看>>
Spread for Windows Forms高级主题(7)---自定义打印的外观
查看>>
Redis的sort命令
查看>>
CountDownLatch使用及实现原理
查看>>
String.split的使用误区
查看>>
VRRPv2、VRRPv3、VRRPE详解
查看>>
通向ES的高速公路
查看>>
VirtualBox下安装Ubuntu Server 16.04
查看>>
jenkins访问/var/lib/没有权限的问题
查看>>
tomcat内存溢出的问题
查看>>
node.js环境搭建教程 node.js怎么进行环境搭建
查看>>
高并发计数器
查看>>
reduce 方法 (Array) (JavaScript)
查看>>
Docker 容器启动:WARNING: IPv4 forwarding is disabled. Networking will not work
查看>>
Linux权限控制的基本原理
查看>>
Python: pip常见的使用方法
查看>>
ThreadLocal
查看>>
线上出bug了?别怕,这么定位!
查看>>
RabbitMQ安装
查看>>
操作iframe(父级操作子iframe或子级操作父iframe)
查看>>