美文网首页程序员C++
C++标准库结构与使用

C++标准库结构与使用

作者: alex_zhou | 来源:发表于2017-03-02 17:48 被阅读0次

    本文预览:

    • 标准库和STL
    • STL的六大组件
    • STL容器分类
    • STL容器使用

    标准库和STL


    ** 我们在写C++程序的时候离不开标准库,有人说标准库在哪里?我没有看到啊,其实标准库在你安装编译器的时候就已经存放在你的电脑里了,不管是VC还是GNU还是Clang,他们几乎都是携带了一样的标准库,我们在include<string>的时候,string是谁提供的呢?我们看一下标准库到底有哪些东西:**

    标准库包含哪些东西

    我们可能总习惯提到STL,而常常忽略标准库,大概是STL使用的太多了吧,STL大概占据了标准库的80%内容,但是我们也不能忽略了我们在C++里依然可以使用的C函数,这个不是STL的部分,却是标准库的部分,标准库的内容都封装在std域名内。
    标准库非常庞大,很多东西记不住可以方便的查找,这三个网站算是比较权威的:
    cplusplus
    cppreference
    gcc

    STL的六大组件


    STL是标准库里面使用最多的了,因为STL提供了数据结构和算法,写程序离不开数据结构和算法,看看STL的六大组件:

    STL

    六大组件他们之间不是相互孤立的,从容器开始说起,既然是容器,那么装东西就需要分配内存空间,Allocator内嵌容器,帮助容器管理空间;算法要做到通用,相对来说比较独立,但是巧妇难为无米炊,算法想要做饭,得去容器取米,但是怎么取呢,这个就得使用迭代器,迭代器简单理解就是指针,每一种容器都有其对应的迭代器;仿函数和适配器这两个用到的比较少了。

    关于迭代器的注意事项:end()返回并不是指向最后一个元素的迭代器,而是它的下一个

    end()的指向

    STL容器分类


    容器分类,这个没有什么好争议的,数据结构有几种类型,那么STL也不能创造出来其他的新型结构了,所以,在大学学好数据结构这门课有多重要,处处都是数据结构啊。需要说明的是,STL实现的数据结构,在效率上必然没有什么可争议的。当然,学会使用只是一个初级阶段,更重要的是,容器内部是什么数据结构,这个我们要了然于胸,要知道什么情况下使用什么容器,是使用线性容器,还是关联容器还是hash表;以及他们各自的优缺点。

    STL容器的分类

    总结一下,大概的分类:

    • 线性容器
    • Array (把数组分装成了类,固定大小,分配后不可动态增加)
    • Vector (动态增长内存,其策略是内存不够的时候整体扩容和迁移)
    • Deque (指针物理上连续,buffer动态分配,需要重载++操作符实现逻辑上连续)
    • List (双向链表,节点在物理空间不连续,逻辑上通过指针连续)
    • 关联容器
    • set/multiset (红黑树)
    • map/multimap (红黑树,插入删除操作比较耗时,查找快)
    • 无序容器 (C++11 新增加的内容, set和map的hash实现)

    STL容器使用


    简单的使用在cppreference内都有示例可以查看,代码可以直接在网页上编译运行,十分方便。

    相关文章

      网友评论

        本文标题:C++标准库结构与使用

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