美文网首页
Boolan-STL与泛型编程第一周笔记

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

作者: 杨嘉莉 | 来源:发表于2018-04-28 15:23 被阅读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()进行搜索。

    相关文章

      网友评论

          本文标题:Boolan-STL与泛型编程第一周笔记

          本文链接:https://www.haomeiwen.com/subject/bkpglftx.html