Boolan-STL与泛型编程第一周笔记

2018-04-28  本文已影响0人  杨嘉莉

STL标准库体系结构内核分析

泛型编程:generic programming使用模板template为主要工具来编程

1. SL与STL

SL:标准库,以header files形式呈现。

1. C++的SL,header files不带副档名(.h),如#include<vector>

2. 新式C的header files不带副档名.h,如#include<cstdio>

3. 旧式C的header files副档名.h仍可以用,如#include<stdio.h>

补充:

Namespace:可以封装自己的类、函数,从而不与别人的发生混淆。旧式的头文件不被封装在命名空间中。

Std::vector

Using namespace std;//全部打开

Using std::vector ;//打开部分

STL:标准模板库,6大部件

容量上:SL > STL

六大部件:containers ,allocators , lgorithms , iterators , adapters , functors

2. C++11中的range-basedfor statement

For(dec1 : coll ) {statement}

For(int(auto) i:{1, 4 ,6 ,8,34,45})  {……}

For(auto elem :vec ){cout<<elem;}

For(auto& elem :vec ) {elem*=3;}使用引用时,才会改变原始容器中的数值

Auto

第一种写法:

List<string>  c;

List<string>::iterator ite;

Ite= ::find(c.begin(),c.end(),target);

第二种写法:(但是ite的定义一定要在容器vector定义之后。这种用法要适度

List<string> c;

Auto ite = :: find(c.begin(),c.end(),target);

3. container

结构分类:序列式,关联式(快速查找),不定序(Hash-table)

序列式

array(不能扩充)、vector(后端可扩充)、deque(两端都可扩充)、list(可双向查找)、forward-list(单向链表)

关联式(大量查找)

Set(key=value,放的元素不可以重复)、Map(key、value)、Multiset(放的元素可以重复)、multimap(放的元素可以重复)

不定序:篮子里面有链表,但不能过长,会影响查找速度

 注意:::find()为algorithms中提供的全局函数,而bsearch ()为vector中自带的搜索,但是一般会先排序,再进行二分法的搜索,所以时间大部分都用在了sort上,所以::find会比c.sort更加快速。对于stack、queue,不提供iterator的操作,只能使用全局的::find()进行搜索。
上一篇 下一篇

猜你喜欢

热点阅读