【S4】使用empty()而不是判断size()是否为0

1、二者的作用是一样的,结果也是等价的。就是判断集合是否为空。

2、二者是等价的,为什么强调使用empty,因为empty效率更高。

3、在STL中,对于一般的集合,empty和size都是常数时间。但是对于list,empty是常数时间,size是线性时间;考虑为什么?

  考虑增删操作,对于一般的集合,增删是线性时间,因为涉及到元素的移动,增删的同时也就更新了元素个数。但是对list增删,是常数时间,不会更新节点个数。

  因此,对于一般的集合,size是实时更新的,empty与size可认为是等价的。但是对于list:对于empty,只需要检查head是否为end就可以了,为常数时间。对于size,必须遍历,为线性时间。

原文地址:https://www.cnblogs.com/nzbbody/p/3411235.html