• 学习BoolanC++笔记_06(STL与泛型编程第六周)


    作者: ayaoko

    出处: http://www.cnblogs.com/fyc006/>

    关于作者:小可才疏学浅还请多多赐教!

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(270469391@qq.com)咨询.

    1,你应具备的基础
    C++基本语法(包括如何正确使用模板,templates)
     2,我们的目标
    C++标准库,了解,深入,良好使用,扩展
     3,C++标准库
    包含如下图(同时含STL):
     
    用法

    1,标准库以header files 形式呈现

       C++标准库的header files 不带扩展名(.h),例如#include<vector>

       新式C header files 不带扩展名(.h),例如#include<cstdio>

       旧式C header files 不带扩展名(.h),例如#include<stdio.h>

    2,新式headers 内的组件封闭namespace "std"

       Using namespace std;

       Using std::cout;

       旧式headers 内的组件不封装namespace "std"

    总结,一般C++头文件不带.h,使用到旧的前加c,正常直接using namespace。

     4,侯捷老师推荐网址:
    5,STL的六大组件

    STL的优点在于提出并建立了一个抽象概念库,而在这个抽象概念库中,处于核心的地位的六大部件,它们分别是:

    1.         空间配置器(Allocator)

    2.         迭代器(Iterator)

    3.         容器(Containter)

    4.         算法(Algorithm)

    5.         适配器(Adaptor)

    6.         函数对象/仿函数(Functor)

    它们之间的关系如下:
    STL六大部件关系图
    图解:Container通过Allocator来管理空间(主要是内存),
    Algorithm通过Iterator来存取Container中的数据,
    Functor扩展Algorithm,Adaptor来包装Container、Iterator、Functor.
    5,1 一些使用说明。
    1,时间复杂度Big-oh。
    2,Iterator前开后闭区间。
    3, IDE>C++11, auto for 语法糖。(前几周有描述) 
    5,2测试
     容器-结构与分类 (通过图片可了解容器结构)
    各容器测试(使用方法类似,需要根据上图结构,来选择不同场景使用(可根据容器名查询使用方法)):
    使用容器array: 内存连续
    使用容器vector: 内存连续,扩大需要移动, 内存扩大 2部
    使用容器list: 内存动态,双向循环链表
    使用容器forward_list:内存动态,单向链表 在尾结点插入和删除
    使用容器slist: 内存动态,单向链表 在头结点插入和删除
    使用容器deque: 双向队列
    使用容器stack: 栈是一种容器适配器,后入先出
    使用容器queue: 队列
    使用容器multiset: 可重复,不使用[]
    使用容器multimap:可重复,不使用[]
    使用容器unordered_multiset:  可重复,不使用[] (c++11新的容器其内部不再采用红黑树实现,而是采用了hash表,加速了检索速度。)
    使用容器unordered_multimap: 可重复,不使用[] (c++11新的容器其内部不再采用红黑树实现,而是采用了hash表,加速了检索速度。)
    使用容器set: 不可重复,可使用[]
    使用容器map:不可重复,可使用[]
    使用容器unordered_set: 不可重复,可使用[](c++11新的容器其内部不再采用红黑树实现,而是采用了hash表,加速了检索速度。)
    使用容器unordered_map: 不可重复,可使用[](c++11新的容器其内部不再采用红黑树实现,而是采用了hash表,加速了检索速度。)
    使用分配器allocator:*分配器(不建议使用)
      
     
    作者:ayaoko
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    视频像素点级的标注
    unet
    Emmet缩写语法
    Nginx漏洞利用与安全加固
    算法时间复杂度
    动态规划dp
    数据结构Java实现04---树及其相关操作
    关于递归
    Java正则表达式
    Java String相关
  • 原文地址:https://www.cnblogs.com/fyc006/p/6435269.html
Copyright © 2020-2023  润新知