【S4】使用empty()而不是判断size()是否为0
2013-11-06 20:42
169 查看
1、二者的作用是一样的,结果也是等价的。就是判断集合是否为空。
2、二者是等价的,为什么强调使用empty,因为empty效率更高。
3、在STL中,对于一般的集合,empty和size都是常数时间。但是对于list,empty是常数时间,size是线性时间;考虑为什么?
考虑增删操作,对于一般的集合,增删是线性时间,因为涉及到元素的移动,增删的同时也就更新了元素个数。但是对list增删,是常数时间,不会更新节点个数。
因此,对于一般的集合,size是实时更新的,empty与size可认为是等价的。但是对于list:对于empty,只需要检查head是否为end就可以了,为常数时间。对于size,必须遍历,为线性时间。
2、二者是等价的,为什么强调使用empty,因为empty效率更高。
3、在STL中,对于一般的集合,empty和size都是常数时间。但是对于list,empty是常数时间,size是线性时间;考虑为什么?
考虑增删操作,对于一般的集合,增删是线性时间,因为涉及到元素的移动,增删的同时也就更新了元素个数。但是对list增删,是常数时间,不会更新节点个数。
因此,对于一般的集合,size是实时更新的,empty与size可认为是等价的。但是对于list:对于empty,只需要检查head是否为end就可以了,为常数时间。对于size,必须遍历,为线性时间。
相关文章推荐
- 调用empty而不是检查size()是否为0,来判断容器中是否有零个元素
- PHP判断键值数组是否存在,使用empty或isset或array_key_exists
- 输入任意大小的三个整数,判断其中是否有两个奇数一个偶数。若是,则输出“YES”,不是则输出“NOT” (要求用条件表达式进行判断,不使用if语句)
- 判断用户输入的数字是否为99,并将不是数字之和打印出来,巧妙使用break和continue。
- session失效,使用ajax请求数据被拦截,此时正常的处理逻辑是跳到登录界面,而不是界面没有变化(java判断是否是ajax请求)
- STL高效编程(三) - 用empty()来代替size()判断容器是否为空
- velocity 判断 变量 是否不是空或empty
- [准确]判断PHP键值数组是否存在,使用empty或isset或array_key_exists
- 调用empty()而不是检查size()是否为0
- PHP判断键值数组是否存在,使用empty或isset或array_key_exists
- 为什么判断 std::vector 是否为空时,用 if(0==vec.size()) 提示效率低,但用 if (vec.empty()) 正常?
- PHP判断键值数组是否存在,使用empty或isset或array_key_exists
- 多线程操作中为什么使用while而不是if来做判断状态是否就绪
- Delphi判断文件是否正在被使用(CreateFile也可以只是为了读取数据,而不是创建)
- 使用CollectionUtils.isNotEmpty() 判断 List Set 是否为null
- PHP判断键值数组是否存在,使用empty或isset或array_key_exists(转)
- 使用String.IsNullOrEmpty来判断字符串是否为空.
- 调用empty而不是检查size()是否为0
- velocity 判断 变量 是否不是空或empty
- 判断某个窗口是否是活动窗口(当前正在使用、操作的窗口)