学习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
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/fyc006/p/6435269.html