内容: 今天记录下一个effective STL的一个条款。就是使用empty()函数来判断空而不是使用size()是否为0来检测为空。原因是:empty()对所有的标准容器都是常数时间参数,虽然一般size()也是,但是有一个不一定是,就是list。list有的实现选择用线性时间复杂度来实现size(),而有的实现则采取了在增删操作中维护好一个size(),而需要的时候直接返回。
VS下:
分析:在我自己电脑看的实现两者都是常数时间复杂度,在插入删除中维护了一个Mysize的值
建议: 使用empty()来代替size()判断空,这样可以避免有些实现对list容器的size()是以线性时间复杂度实现的,还有一个就是现在编译器好多都已经把书里的一些情况解决了。我以前看的STL书里写的size()实现就是用线性时间复杂度来实现的,不过现在看看自己电脑上测试结果是常数时间复杂度的。程序员真的是一个活到老学到老的行业啊,你不更新你的知识,就会被淘汰。