effective STL 某个Item里重点提出了 list.size()是一个O(n)的效率  当时只是记下来了  后面看了csdn有人在实际工程上遇到坑了  我近来闲来无事 把STL的list相关部分好好看下:

看看STL大牛们设置成O(n)的原因:

1) size() 调用algorithm里的distance() 得出长度  而empty()就是判断头和尾是否相等 O(1) 大部分情况下 咱们都是判断这个list是否为空

2) 设计原因: list引入了一个重要的splice操作,在常量级别也就是o(1)完成list的tranfer 这个操作对merge reverse sort有很大的帮助  如果:

size()不这样做 那么tranfer就不能是o(1)完成 不是o(1) 那么就在Merge 和sort就不能高效完成  而且事实上 merge 和sort操作显的更为重要些,所以size()在每次调用时调用distance 而不是更好的O(1) 这样就可以均摊tranfer的常量级操作  看到网上人吐槽这个地方  我想懂了上述设计原理  也不会吐槽这个结构了。

C++ list size()所想到的事情的更多相关文章

  1. caffe里的blocking_queue.hpp与.cpp干了点什么呢???

    我看的一下午才明白的,因为吧,我之前都是不知道与boost::thread相关的任何知识,然后开始看各种资料啊... 妈的,我就是一个小白,没一点基础的.. 总的来说:blocking_queue实现 ...

  2. 像计算机科学家一样思考python-第4章 案例研究:接口设计

    系统环境 ubuntu18 4.1turtle模块 模块一开始导入turtle模块就报错了 Python ( , ::) [GCC ] on linux Type "help", ...

  3. 理解 OpenStack + Ceph (9): Ceph 的size/min_size/choose/chooseleaf/scrubbing/repair 等概念

    本系列文章会深入研究 Ceph 以及 Ceph 和 OpenStack 的集成: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 物理和逻辑结构 (4)Ceph 的基础数据结构 ...

  4. java.lang.OutOfMemoryError: bitmap size exceeds VM budget解决方法

    1 BitmapFactory.decodeFile(imageFile); 用BitmapFactory解码一张图片时,有时会遇到该错误.这往往是由于图片过大造成的.要想正常使用,则需要分配更少的内 ...

  5. [IOS]译Size Classes with Xcode 6: One Storyboard for all Sizes

    Size Classes with Xcode 6: One Storyboard for all Sizes 为所有的尺寸准备一个Storyboard 我最喜欢的Xcode6的特性是新的size c ...

  6. Elasticsearch——分页查询From&Size VS scroll

    Elasticsearch中数据都存储在分片中,当执行搜索时每个分片独立搜索后,数据再经过整合返回.那么,如果要实现分页查询该怎么办呢? 更多内容参考Elasticsearch资料汇总 按照一般的查询 ...

  7. 成为 Web 开发大师你必须知道的 7 件事情

    曾经是这样的,懂点编码,并可以偶尔耍点酷,那么你就会被认为是一个Web开发大师.但是现在,情况再也不是这样的了.Web开发已经朝着主流方向发展,开发人员数量显著增加.这意味着,如果你想成为这个领域的大 ...

  8. 每一个C#开发者必须知道的13件事情

    1.开发流程 程序的Bug与瑕疵往往出现于开发流程当中.只要对工具善加利用,就有助于在你发布程序之前便将问题发现,或避开这些问题. 标准化代码书写 标准化代码书写可以使代码更加易于维护,尤其是在代码由 ...

  9. iOS开发~UI布局(二)storyboard中autolayout和size class的使用详解

    一.概要:前一篇初步的描述了size class的概念,那么实际中如何使用呢,下面两个问题是我们一定会遇到的: 1.Xcode6中增加了size class,在storyboard中如何使用? 2.a ...

随机推荐

  1. 使用AXIS2客户端调用 WEBSERVICE

    问题 在调用WEBSERVICE时,可以使用wsdl2java生成java代码,调用接口,这种方法在接口固定的情况下是一种不错的选择,如果需要动态调用接口,那么这样就行不通了. 解决办法 1.直接构建 ...

  2. 关于java对Excel的读取

    /*注意:读取的Excel文件 请另存为2003版本的Excel,否则可能会报错别忘记导入第三方的jar包*/package com.zzp.ExcelParse;import jxl.Cell;im ...

  3. Spring Boot中的注解

    文章来源:http://www.tuicool.com/articles/bQnMra 在Spring Boot中几乎可以完全弃用xml配置文件,本文的主题是分析常用的注解. Spring最开始是为了 ...

  4. tomcat重启脚本

    #!/bin/bashPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/binexport JAVA_HOME=/opt/jd ...

  5. 主板BIOSCOMS故障解决三例

    主板故障中因为BIOS/COMS设置不当或者因为主板电池引起的coms故障而导致主板无法正常工作的比例占了不小.今天我们就来说说主板BIOS/COMS的故障和解决.声卡维修 硬盘安装设置 CMOS设置 ...

  6. 用JS修改checkbox的选中状态

    代码如下: <SCRIPT LANGUAGE="JavaScript"> <!-- function change() { var c=document.myfo ...

  7. iOS 支付宝第三方使用步骤

    使用支付宝进行一个完整的支付功能,大致有以下步骤: 1 与支付宝进行签约,获得商户ID(partner)和账号ID(seller) 2 下载相应的公钥私钥文件(加密签名用) 3 下载支付宝SDK 4 ...

  8. 面试复习(C++)之归并排序

    #include <iostream> #include<stdlib.h>//引入malloc using namespace std; void Merge(int *a, ...

  9. 转载:CDH5.X完全卸载步骤

    http://blog.csdn.net/wulantian/article/details/42706777 //CDH5.X完全卸载步骤 # by coco # 2015-01-14   1. 关 ...

  10. React之Froms

    In React, a <textarea> uses a value attribute instead. This way, a form using a <textarea&g ...