Chinaunix首页 | 论坛 | 博客
  • 博客访问: 831087
  • 博文数量: 158
  • 博客积分: 4380
  • 博客等级: 上校
  • 技术积分: 2367
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-21 10:45
文章分类

全部博文(158)

文章存档

2012年(158)

我的朋友

分类: C/C++

2012-11-19 11:28:07

map::rbegin的一个注意点

在上请教如何取得map的最后一个元素,给出了两个方法:
a.
    itor = m.end();
    *( --itor );
b.
    *( m.rbegin() );
(BTW:不知道哪个更好?其实我觉得都不好,不知道有没有更好的办法?)

七猫说使用……时需要确保!m.empty(),这句话提醒了我,于是写个代码测试一下:
    map a;
    cout << a.begin()->first << endl;
    a.rbegin()->first;
发现 a.begin()->first 是一个无效值(很合理),而 a.rbegin()->first 在VC++6.0中导致死循环,在dev-cpp4992中导致访问非法地址异常而退出。
阅读(2379) | 评论(8) | 转发(0) |
给主人留下些什么吧!~~

网友评论2012-11-19 11:29:18

Diviner
rt

网友评论2012-11-19 11:29:00

周星星
vector、list、queue、deque 等有 back 函数,
stack 理论上不应该有 back 函数,
但为什么 set、map 却不提供 back 函数呢?

网友评论2012-11-19 11:28:49

Diviner
a.
    itor = m.end();
    *( --itor );
b.
    *( m.rbegin() );