1. 标准模板库

    • 标准模板库在标准函数库的定位
    • 迭代器(类似指针)保证算法(常用算法)和容器(数据结构)的结合。
  2. vector的实现
    • 底层实现是动态数组,所以支持随机访问。
    • 内部是动态数组,随着insert和push_back插入元素而自动扩容(类似realloc),一般扩充为原来的2倍。
    • erase操作删除某个迭代器(vector<T>::iiterator)指向的元素,并将迭代器前移。
    • size()和capacity()区别:前者是元素数量,后者是内存大小。
    • vector<T>:: size_type -> allocator<T>::size_type -> allocator<T>::_SIZE -> size_t -> unsigned int
  3. list和vector区别
    • vector为连续内存空间,支持随机存取,但capacity调整开销大。
    • list为不连续空间,不支持随机存取,但插入、删除更方便。
  4. deque和vector的区别
    • deque为双向队列,连续内存空间,支持随机存取。有pop_front()和push_front()操作,适用于首位两端进行插入、删除操作。
    • vector支持预先设置capacity。reserve()方法调整内存空间,一定程度上提高了大量增加数据时的效率。
  5. queue和stack区别
    • stack:后进先出,容器适配器。默认使用deque
    • queue:先进先出,容器适配器。默认使用deque
  6. set和map
    • set:Key和value值相同,聚合(associative)容器,通过key访问,内部有序。
    • map:key和value值(通过pair的first和second区分)可以不同,聚合(associative)容器,通过key访问,内部有序。
    • 实现:均为平衡二叉树,具体是红黑树。
  7. map和hashmap区别
    • map:红黑树。key有序。
    • hashmap:哈希表(vector保存桶,list处理溢出【有序】)。存取操作复杂度为1。
    • 补充:哈希表(hash函数直接定址,解决冲突):通过初始容量和加载因子(0.75)
  8. 智能指针auto_ptr
    • 引用计数:随着复制构造而递增引用。随着赋值操作,递减左值,递增右值。析构时,递减引用。
    • 引用计数为0时,删除基础对象。
    • 重载->和*操作符。
    • 使用限制(一个对象一个智能指针【便于管理】,不可以按值传递,不支持数组)
  9. 函数对象
    • 重载了()的对象,可以像函数一样使用。
    • bind1st和bind2nd用于把二元函数对象转化为一元函数,前者固定第一个参数,后者固定第二个。

C/C++程序基础 (十一)标准模板库的更多相关文章

  1. 【转】C++标准库和标准模板库

    C++强大的功能来源于其丰富的类库及库函数资源.C++标准库的内容总共在50个标准头文件中定义.在C++开发中,要尽可能地利用标准库完成.这样做的直接好处包括:(1)成本:已经作为标准提供,何苦再花费 ...

  2. C++标准库和标准模板库

    转自原文http://blog.csdn.net/sxhelijian/article/details/7552499 C++强大的功能来源于其丰富的类库及库函数资源.C++标准库的内容总共在50个标 ...

  3. STL(标准模板库)理论基础,容器,迭代器,算法

    基本概念 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间.   ...

  4. C++标准库和标准模板库(转)

    转自原文http://blog.csdn.net/sxhelijian/article/details/7552499 C++强大的功能来源于其丰富的类库及库函数资源.C++标准库的内容总共在50个标 ...

  5. STL(标准模板库)基本概念

    一.什么是STL STL(Standard Template Library,标准模板库)的从广义上讲分为三类:algorithm(算法).container(容器)和iterator(迭代器),容器 ...

  6. C/C++之标准库和标准模板库

    C++强大的功能来源于其丰富的类库及库函数资源.C++标准库的内容总共在50个标准头文件中定义.在C++开发中,要尽可能地利用标准库完 成.这样做的直接好处包括:(1)成本:已经作为标准提供,何苦再花 ...

  7. C++标准模板库(STL)和容器

    1.什么是标准模板库(STL)? (1)C++标准模板库与C++标准库的关系 C++标准模板库其实属于C++标准库的一部分,C++标准模板库主要是定义了标准模板的定义与声明,而这些模板主要都是 类模板 ...

  8. C++ 标准库和标准模板库(STL)

    转自原文http://blog.csdn.net/sxhelijian/article/details/7552499 一.C++标准库 C++标准库的内容分为10类,分别是(建议在阅读中,将你已经用 ...

  9. 标准模板库(STL)学习指南之sort排序

    对于程序员来说,数据结构是必修的一门课.从查找到排序,从链表到二叉树,几乎所有的算法和原理都需要理解,理解不了也要死记硬背下来.幸运的是这些理论都已经比较成熟,算法也基本固定下来,不需要你再去花费心思 ...

随机推荐

  1. 手机缺失sqlite3时操作数据库的多种解决方案 ----adb命令科普

    在Android应用开发无处不在SQLite数据库的身影.那么在开发中怎么使用adb命令操作数据库的功能呢? 下面我们将完整的介绍与数据库操作相关的命令集及当手机缺少sqlite3的时候的多种解决方案 ...

  2. ThreadLocal 开启事务

    1.ThreadLocal该类提供了线程局部变量 2.分析原理: ThreadLocal内部有一个Map.Map的key是当前线程对象,value是一个Object对象. 模拟该类: public c ...

  3. 给用户添加sodu权限

    vim /etc/sudoers 进入编辑模式,找到这一 行:"root ALL=(ALL) ALL"在起下面添加"xxx ALL=(ALL) ALL"(这里的 ...

  4. Linux安装phpMyAdmin配置管理多个数据库

    1.下载 :phpMyAdmin 2.解压安装包: tar -zxvf phpMyAdmin-4.6.5.2-all-languages.tar.gz 3.替换目录 : mv phpMyAdmin-4 ...

  5. IOS如何打越狱包xcode无证书打包ios应用

    本文要介绍的是在无证书的情况下如何将自己应用打包出去在越狱设备上使用或发给第三方使用企业签名进行应用分发. 前提条件:拥有appleId账号,并且该账号已经注册开发者中心(无需花钱) 教程开始: 1. ...

  6. Shader学习笔记整理

    1.常用矩阵 UNITY_MATRIX_V 视口矩阵 UNITY_MATRIX_P 投影矩阵 UNITY_MATRIX_MV 模型矩阵 * 视口矩阵 UNITY_MATRIX_MVP 模型矩阵 * 视 ...

  7. formvalidator插件

    一.引用jquery 二.引用formValidator.js //================================================================== ...

  8. myVision云服务商业数据分析解决方案

    类型: 定制服务 软件包: business intelligence internet retailing solution collateral 联系服务商 产品详情 解决方案 概要 2014年, ...

  9. matplotlib安装指南

    matplotlib安装指南1.介绍NumPy地址 http://www.numpy.org/NumPy:一个Python一个扩展库,支持大量的维度数组和举证运算,对数组提供大量的函数库 SciPy地 ...

  10. Java集合集锦

    1.介绍Collection框架的结构 集合是Java中的一个非常重要的一个知识点,主要分为List.Set.Map.Queue三大数据结构.它们在Java中的结构关系如下: Collection接口 ...