作者: 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,侯捷老师推荐网址:
cplusplus:http://www.cplusplus.com/
cppreference: http://en.cppreference.com/w/
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.
图解: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
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。