博览网C++课程 第六周

1 认识headers、版本、重要资源

STL(Standard TemplateLibrary)分为6个部分,不同于C标准库(知识独立的函数),彼此之间有很紧密的关联。

泛型编程:以模板为主要功能进行编程。

 

几种LEVEL:

0

使用标准库

1

认识标准库

2

良好使用标准库

3

扩充标准库


标准库大于STL。

“using namespace std;”将std命名空间全部打开;

“using std::cout”只使用std中的cout一个部分功能。

 

常用资料来源:

http://www.cplusplus.com/

http://en.cppreference.com/w/

https://gcc.gnu.org/onlinedocs/

2 STL体系结构基础介绍

3 容器之分类与各种测试(一)

4 容器之分类与各种测试(二)

5 容器之分类与各种测试(三)

6 容器之分类与各种测试(四)

 

STL6大部件:

容器 Containers

分配器 Allocators

算法 Algorithms

迭代器 Iterators

适配器 Adapters

仿函数 Functors

 

容器中对内存的操作需要分配器的支持。

迭代器:好似一种泛化的指针。

多种部件一起使用示例代码:



容器:前闭后开区间

vector.begin指向首部,vector.end指向尾部最后一个元素的下一个位置。

所以*(vector.begin())能够访问到数据,而*(vector.end())可能会引起段错误。


容器不一定是连续空间。

 

C++11循环的新语法:

for( decl : coll){

         statement;

}

在十分了解自己程序的前提下也要适当使用auto类型。


 

容器分为两个种类:

序列式:

array:起点固定,尾部固定。

vector:起点固定,尾部可以扩充,分配器实现扩充功能。

deque:起点和尾部都可以扩充。

list:双向链表(两个指针)。

forward_list:单向链表(一个指针)。

 

关联式:元素是用key来找value,适合快速查找。Multi型表示key可以重复。

Set/Multiset:二分树,实质用的红黑树(左右元素平衡,方便查找),key就是value,value就是key。

Map/Multimap:比Set多一个key。

 

 

 

标准库中:qsort排序算法,bsearch查找算法(排序后使用),sequence search查找算法(乱序时使用,非常慢)。find查找元素,返回值是iterator。

 

序列式容器

array

array<type, size> a;连续排列,固定大小,不能扩充。

vector

vector<type> v;连续排列,元素可向后扩充。

list

list<type> l;非连续排列,类似链表,元素可前后扩充。

forward_list

forward_list<type> f; 非连续排列,类似链表,元素可向后扩充

slist

__gnu_cxx::slist<type> s;非标准库的单向链表,头文件<ext\slist>,用法和forward_list相同。

deque

deque<type> d;连续排列,元素可前后扩充,deque看似是连续的,但是元素其实是分段存储的,由N个buffer组成。

 

关联式容器

multiset

multiset<type> m;树形结构存储,没有push_back,只有insert功能用来插入元素。

multimap

multimap<key, value> m;

unordered_multiset

unordered_multiset<type> u;篮子一定比元素多。

unordered_multimap

unordered_multimap<key, value> m;

set

set<type> s;元素不能重复(key就是value,value就是key)。

map

map<key, value> m; key不能重复,value可以。

unordered_set

 

unordered_map

 

 

 

7 分配器之测试

 

GNU带的扩展的分配器,非标准库

include <ext/xxx_allocator.h>

1

__gnu_css::malloc_allocator<type>

2

__gnu_css:: new_allocator <type>

3

__gnu_css:: __pool_allocator <type>

4

__gnu_css:: debug_allocator <type>

5

__gnu_css:: mt_allocator <type>

6

__gnu_css:: bitmap_allocator <type>

7

__gnu_css:: array_allocator <type>

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值