精华内容
下载资源
问答
  • python标准库6张思维导图学明白

    万次阅读 多人点赞 2020-11-13 08:45:08
    先呈上高清下载地址链接:https://pan.baidu.com/s/14x2Cno96vp67qPz0Ee4weA提取码:7j7g1、标准库概览标准库包含:数据库处理,输入输出存储...

    先呈上高清下载地址

    链接:

    https://pan.baidu.com/s/14x2Cno96vp67qPz0Ee4weA

    提取码:7j7g

     

    1、标准库概览

    标准库包含:数据库处理,输入输出存储,数学运算,math,日期与数据处理,文字正则处理,多线程threading,多进程multiprocessing,文件操作os.path,操作系统os,运行控制sys

    2.正则表达式

    正则包含元字符,转义字符,常用函数compile,search、match,findall,split,sub,escape;正则匹配与编组group,子组捕获

    相关文章: 正则表达式完全解析

                   Python标准库01 正则表达式 (re包)

    3.时间与日期

    Python时间包含:datatime; 模块 calendar模块;time的主要方法sleep,strtime,time,clock,localtime;结构化时间struct_time

    参考文章python时间处理大全

                     Python标准库02 时间与日期 (time, datetime包)

    4.系统与文件

    文件管理:文件操作remove,rename,walk,getcwd;
    目录操作:getcwd,chdir;访问权限 access

    路径:os.path,glob.glob()

    存储对象:pickle,shelve

    参考文章:Python标准库03 路径与文件 (os.path包, glob包)

                     Python标准库04 文件管理 (部分os包,shutil包)

                     Python标准库05 存储对象 (pickle包,cPickle包)

                     

    5. 进程与线程

    多进程:模块multiprocessing,Process,Pool

    进程通讯:Queque,Pipes,

    分布式进程:multiporcessing.managers

    多线程:ThreadLocal,Lock threading

    参考文章Python标准库06 子进程 (subprocess包)

    6.数据库

    pymysql,SQLite

    参考文章pymysql 操作mysql数据库详解

    7. 数学运算与数据结构

    随机数 random

    集合类:collections,namedtuple,defaultdict,OrderedDict,Counter

    数据结构:堆heap,双端队列 deque

    呈上高清下载地址

    链接:https://pan.baidu.com/s/14x2Cno96vp67qPz0Ee4weA

    提取码:7j7g

    更多思维导图14张思维导图带你征服Python编程

    亲,需要你的“分享”“在看”

    IT入门 感谢关注

    程序员题库→

    程序员用的单词表→

    练习地址:www.520mg.com/it

    展开全文
  • C++标准库

    千次阅读 2019-06-09 23:19:10
    C++标准库:如string、cstdio(注意,不带.h)是C++标准库提供的。使用时要用using namespace std找开命名空间。 编译器扩展库:这是针对不同的编译器而独有扩展的,例如g++和vc++,它们在这一板块就不同。...

    1.C++编译环境的组成:

    • C语言兼容库:头文件带.h,是C++编译器提供商为推广自己的产品,而提供的C兼容库不是C++标准库提供的),内置的C库
    • C++标准库:如stringcstdio(注意,不带.h)是C++标准库提供的。使用时要用using namespace std找开命名空间。
    • 编译器扩展库:这是针对不同的编译器而独有扩展的,例如g++和vc++,它们在这一板块就不同。
    • C++标准语法模块:C++标准语法的支持。
    • C++扩展语法模块:同样是针对不同的编译器而独有扩展语法。

     

    2.C++标准库:

    (1)C标准函数库

     

    (2)流输入/输出

    <iostream>:支持标准流cin、cout、cerr和clog的输入和输出,还支持多字节字符标准流wcin、wcout、wcerr和wclog。
    <iomanip>:提供操纵程序,允许改变流的状态,从而改变输出的格式。
    <ios>:定义iostream的基类。
    <istream>:为管理输出流缓存区的输入定义模板类。
    <ostream>:为管理输出流缓存区的输出定义模板类。
    <sstream>:支持字符串的流输入输出。
    <fstream>:支持文件的流输入输出。
    <iosfwd>:为输入输出对象提供向前的声明。
    <streambuf>:支持流输入和输出的缓存。
    <cstdio>:为标准流提供C样式的输入和输出。
    <cwchar>:支持多字节字符的C样式输入输出。

     

    (3)数值操作

    <complex>:支持复杂数值的定义和操作。
    <valarray>:支持数值矢量的操作。
    <numeric>:在数值序列上定义一组一般数学操作,例如accumulate和inner_product。
    <cmath>:这是C数学库,其中还附加了重载函数,以支持C++约定。
    <cstdlib>:提供的函数可以提取整数的绝对值,对整数进行取余数操作。

     

    (4)诊断功能

    <stdexcept>:定义标准异常。
    <cassert>:定义断言宏,用于运行时检查。
    <cerrno>:支持C样式的错误信息。

     

    (5)通用工具

     

    (6)国际化

     

    (7)语言支持功能

    <cstddef>:定义宏NULL和offsetof以及其它标准类型size_t和ptrdiff_t。与对应的标准C头文件的区别是,NULL是C++空指针常量的补充定义(C++11中已有关键字nullptr),宏offsetof接受结构或者联合类型参数,只要没有成员指针类型的非静态成员即可。
    <limits>:提供与基本数据类型相关的定义。例如,对于每个数值数据类型,它定义了可以表示出来的最大值和最小值以及二进制数字的位数。
    <climits>:提供与基本整数数据类型相关的C样式定义,C++样式定义在<limits>中。
    <cfloat>:提供与基本浮点型数据类型相关的C样式定义,C++样式定义在<limits>中。
    <cstdlib>:提供支持程序启动和终止的宏和函数,还声明了许多其他杂项函数,例如搜索和排序函数,从字符串转换为数值等函数。<cstdlib>与对应的标准C头文件stdlib.h不同,定义了abort(void)。abort()函数还有额外的功能,它不为静态或自动对象调用析构函数,也不调用传给atexit()函数的函数。它还定义了exit()函数的额外功能,可以释放静态对象,以注册的逆序调用用atexit()注册的函数。清除并关闭所有打开的C流,把控制权返回给主机环境。
    <new>:支持动态内存分配。
    <typeinfo>:支持变量在运行期间的类型标识。
    <exception>:支持异常处理,是处理程序中可能发生的错误的一种方式。
    <cstdarg>:支持接受数量可变的参数的函数。即在调用函数时,可以给函数传送数量不等的数据项。定义了宏va_arg、va_end、va_start以及va_list类型。
    <csetjmp>:为C样式的非本地跳跃提供函数,在C++中不常用。
    <csignal>:为中断处理提供C样式支持。

     

    (8)字符串处理

    <string>:为字符串类型提供支持和定义,包括单字节字符串(由char组成)的string和多字节字符串(由wchar_t组成)。
    <cctype>:单字节字符类别。
    <cwctype>:多字节字符类别。
    <cstring>:为处理非空字节序列和内存块提供函数。不同于对应的标准C库头文件,C样式字符串的一般C库函数被返回值为const和非const的函数对替代。
    <cwchar>:为处理、执行I/O和转换多字节字符序列提供函数,不同于对应的标准C库头文件,几个多字节C样式字符串操作的一般C库函数被返回值为const和非const的函数对替代。
    <cstdlib>:为把单字节字符串转换为数值、在多字节字符和多字节字符串之间转换提供函数。

     

    (9)容器类模板

    <vector>:定义vector序列模板,是一个大小可以重新设置的数组类型,比普通数组更安全、更灵活。
    <list>:定义list序列模板,是一个序列的链表,常常在任意位置插入和删除元素。
    <deque>:定义deque序列模板,支持在开始和结尾的高效插入和删除操作。
    <queue>:为队列(先进先出)数据结构定义序列适配器queue和priority_queue。
    <stack>:为堆栈(后进先出)数据结构定义序列适配器stack。
    <map>:map是一个关联容器类型,允许根据键值是唯一的,且按照升序存储。multimap类似于map,但键不是唯一的。
    <set>:set是一个关联容器类型,用于以升序方式存储唯一值。multiset类似于set,但是值不必是唯一的。
    <bitset>:为固定长度的位序列定义bitset模板,它可以看作固定长度的紧凑型bool数组。
    <array>:(TR1)固定大小数组,支持复制。
    <forward_list>:(c++11)单向列表,支持快速随机访问。
    <unordered_set>:(TR1)无序容器set,其元素随机存放。multiset类似于set,但是值不必是唯一的。
    <unordered_map>:(TR1)无序容器map,其键值随机存放。multimap类似于map,但键不是唯一的。

     

    (10)迭代器

    <iterator>:给迭代器提供定义和支持。

     

    (11)算法

    <algorithm>:提供一组基于算法的函数,包括置换、排序、合并和搜索。
    <cstdlib>:声明C标准库函数bsearch()和qsort(),进行搜索和排序。
    <ciso646>:允许在代码中使用and代替&&。

     

    3.C++ 标准库

    C++ 标准库可以分为两部分

    • 标准函数库 这个库是由通用的、独立的、不属于任何类的函数组成的。函数库继承自 C 语言
    • 面向对象类库 这个库是类及其相关函数的集合。

    C++ 标准库包含了所有的 C 标准库,为了支持类型安全,做了一定的添加和修改。

    标准函数库:

    标准函数库分为以下几类:

    • 输入/输出 I/O
    • 字符串和字符处理
    • 数学
    • 时间、日期和本地化
    • 动态分配
    • 其他
    • 宽字符函数

     

    面向对象类库:

    标准的 C++ 面向对象类库定义了大量支持一些常见操作的类,比如输入/输出 I/O、字符串处理、数值处理。面向对象类库包含以下内容:

    • 标准的 C++ I/O 类
    • String 类
    • 数值类
    • STL 容器类
    • STL 算法
    • STL 函数对象
    • STL 迭代器
    • STL 分配器
    • 本地化库
    • 异常处理类
    • 杂项支持库

     

     

     

     

     

    展开全文
  • Python基础:标准库和常用的第三方库

    万次阅读 多人点赞 2019-05-04 18:24:13
    Python的标准库有: 名称 作用 datetime 为日期和时间处理同时提供了简单和复杂的方法。 zlib 直接支持通用的数据打包和压缩格式:zlib,gzip,bz2,zipfile,以及tarfile。 random 提供了生成...

    Python的标准库有:

    名称 作用
    datetime 为日期和时间处理同时提供了简单和复杂的方法。
    zlib 直接支持通用的数据打包和压缩格式:zlib,gzip,bz2,zipfile,以及 tarfile。
    random 提供了生成随机数的工具。
    math 为浮点运算提供了对底层C函数库的访问。
    sys 工具脚本经常调用命令行参数。这些命令行参数以链表形式存储于 sys 模块的 argv 变量。
    glob 提供了一个函数用于从目录通配符搜索中生成文件列表。
    os 提供了不少与操作系统相关联的函数。

    Python常用的第三方库有:

    名称 作用 使用参考
    Scrapy 爬虫工具常用的库。 https://blog.csdn.net/alice_tl/article/details/81433214
    Requests http库。  
    Pillow 是PIL(Python图形库)的一个分支。适用于在图形领域工作的人。 https://blog.csdn.net/alice_tl/article/details/80866728
    matplotlib 绘制数据图的库。对于数据科学家或分析师非常有用。  
    OpenCV 图片识别常用的库,通常在练习人脸识别时会用到 https://blog.csdn.net/alice_tl/article/details/89291235
    pytesseract 图片文字识别,即OCR识别 https://blog.csdn.net/alice_tl/article/details/89299405
    wxPython Python的一个GUI(图形用户界面)工具。  
    Twisted 对于网络应用开发者最重要的工具。  
    SymPy SymPy可以做代数评测、差异化、扩展、复数等等。  
    SQLAlchemy 数据库的库。  
    SciPy Python的算法和数学工具库。  
    Scapy 数据包探测和分析库。  
    pywin32 提供和windows交互的方法和类的Python库。  
    pyQT Python的GUI工具。给Python脚本开发用户界面时次于wxPython的选择。  
    pyGtk 也是Python GUI库。  
    Pyglet 3D动画和游戏开发引擎。  
    Pygame 开发2D游戏的时候使用会有很好的效果。  
    NumPy 为Python提供了很多高级的数学方法。  
    nose Python的测试框架。  
    nltk 自然语言工具包。  
    IPython Python的提示信息。包括完成信息、历史信息、shell功能,以及其他很多很多方面。  
    BeautifulSoup xml和html的解析库,对于新手非常有用。  

     

    标准库用法参考示例:

    datetime库:

    为日期和时间处理同时提供方法。

    from datetime import date
    #导入时间库
    now=date.today()
    #取当前时间
    print(now)
    birthday=date(1987,12,3)
    print(birthday)
    age=now-birthday
    #假设年龄=当前日期-生日日期
    print(age)

    运行结果为:

    2019-05-04
    1987-12-03
    11475 days, 0:00:00

    zlib库:

    提供压缩和解压的功能。

    import zlib
    m = b'This is a test compress'
    print(m)
    m1=len(m)
    #查看字符串的长度
    print(m1)
    t = zlib.compress(m)
    #假设压缩后的内容为t
    t1=len(t)
    #查看压缩后内容t的长度
    print(t)
    print(t1)
    s = zlib.decompress(t)
    #解压缩后的内容为s
    print(s)
    

    运行结果为:

    b'This is a test compress'
    23
    b'x\x9c\x0b\xc9\xc8,V\x00\xa2D\x85\x92\xd4\xe2\x12\x85\xe4\xfc\xdc\x82\xa2\xd4\xe2b\x00ah\x08\x82'
    29
    b'This is a test compress'

    sys库:

    调用命令行参数,经常使用sys.path来查看python及系统的依赖库包安装路径。

    import sys
    a=sys.path
    #假设系统路径为a
    print(a)

    运行结果为:

    ['/Users/alice/PycharmProjects/untitled', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/nose-1.3.7-py2.7.egg', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tornado-5.0.2-py2.7-macosx-10.13-intel.egg', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/backports_abc-0.5-py2.7.egg', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/singledispatch-3.4.0.3-py2.7.egg', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/futures-3.2.0-py2.7.egg', '/Users/alice/PycharmProjects/untitled', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python37.zip', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload', '/Users/alice/venv/untitled/lib/python3.7/site-packages', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC']
     

    展开全文
  • C++标准库和标准模板库

    万次阅读 多人点赞 2012-05-10 08:54:10
    C++标准库的内容总共在50个标准头文件中定义。在C++开发中,要尽可能地利用标准库完成。这样做的直接好处包括:(1)成本:已经作为标准提供,何苦再花费时间、人力重新开发呢;(2)质量:标准库的都是经过严格测试...

      C++强大的功能来源于其丰富的类库及库函数资源。C++标准库的内容总共在50个标准头文件中定义。在C++开发中,要尽可能地利用标准库完成。这样做的直接好处包括:(1)成本:已经作为标准提供,何苦再花费时间、人力重新开发呢;(2)质量:标准库的都是经过严格测试的,正确性有保证;(3)效率:关于人的效率已经体现在成本中了,关于代码的执行效率要相信实现标准库的大牛们的水平;(4)良好的编程风格:采用行业中普遍的做法进行开发。

      在C++程序设计课程中,尤其是作为第一门程序设计课程,我们注重了语法、语言的机制等方面的内容。程序设计能力的培养有个过程,跨过基本的原理性知识直接进入到工程中的普遍做法,由于跨度决定了其难度。再者,在掌握了基本原理的基础上,在认识标准库的问题上完全可以凭借实践,逐步地掌握。标准库的学习不需要认认真真地读书,需要的是在了解概貌的情况下,在实践中深入。

      这个任务就是要知道C++程序设计课程中不讲的,但对程序设计又很重要的这部分内容。至少我们要能先回答出“有什么”的问题。


      一、C++标准库

      C++标准库的内容分为10类,分别是(建议在阅读中,将你已经用过或听说过的头文件划出来):

      C1. 标准库中与语言支持功能相关的头文件

    头文件

    描        述

    <cstddef>

    定义宏NULL和offsetof,以及其他标准类型size_t和ptrdiff_t。与对应的标准C头文件的区别是,NULL是C++空指针常量的补充定义,宏offsetof接受结构或者联合类型参数,只要他们没有成员指针类型的非静态成员即可。

    <limits>

    提供与基本数据类型相关的定义。例如,对于每个数值数据类型,它定义了可以表示出来的最大值和最小值以及二进制数字的位数。

    <climits>

    提供与基本整数数据类型相关的C样式定义。这些信息的C++样式定义在<limits>中

    <cfloat>

    提供与基本浮点型数据类型相关的C样式定义。这些信息的C++样式定义在<limits>中

    <cstdlib>

    提供支持程序启动和终止的宏和函数。这个头文件还声明了许多其他杂项函数,例如搜索和排序函数,从字符串转换为数值等函数。它与对应的标准C头文件stdlib.h不同,定义了abort(void)。abort()函数还有额外的功能,它不为静态或自动对象调用析构函数,也不调用传给atexit()函数的函数。它还定义了exit()函数的额外功能,可以释放静态对象,以注册的逆序调用用atexit()注册的函数。清除并关闭所有打开的C流,把控制权返回给主机环境。

    <new>

    支持动态内存分配

    <typeinfo>

    支持变量在运行期间的类型标识

    <exception>

    支持异常处理,这是处理程序中可能发生的错误的一种方式

    <cstdarg>

    支持接受数量可变的参数的函数。即在调用函数时,可以给函数传送数量不等的数据项。它定义了宏va_arg、va_end、va_start以及va_list类型

    <csetjmp>

    为C样式的非本地跳跃提供函数。这些函数在C++中不常用

    <csignal>

    为中断处理提供C样式支持

      C2. 支持流输入/输出的头文件

    头文件

    描        述

    <iostream>

    支持标准流cin、cout、cerr和clog的输入和输出,它还支持多字节字符标准流wcin、wcout、wcerr和wclog。

    <iomanip>

    提供操纵程序,允许改变流的状态,从而改变输出的格式。

    <ios>

    定义iostream的基类

    <istream>

    为管理输出流缓存区的输入定义模板类

    <ostream>

    为管理输出流缓存区的输出定义模板类

    <sstream>

    支持字符串的流输入输出

    <fstream>

    支持文件的流输入输出

    <iosfwd>

    为输入输出对象提供向前的声明

    <streambuf>

    支持流输入和输出的缓存

    <cstdio>

    为标准流提供C样式的输入和输出

    <cwchar>

    支持多字节字符的C样式输入输出

      C3. 与诊断功能相关的头文件

    头文件

    描        述

    <stdexcept>

    定义标准异常。异常是处理错误的方式

    <cassert>

    定义断言宏,用于检查运行期间的情形

    <cerrno>

    支持C样式的错误信息

      C4. 定义工具函数的头文件

    头文件

    描        述

    <utility>

    定义重载的关系运算符,简化关系运算符的写入,它还定义了pair类型,该类型是一种模板类型,可以存储一对值。这些功能在库的其他地方使用

    <functional>

    定义了许多函数对象类型和支持函数对象的功能,函数对象是支持operator()()函数调用运算符的任意对象

    <memory>

    给容器、管理内存的函数和auto_ptr模板类定义标准内存分配器

    <ctime>

    支持系统时钟函数

      C5. 支持字符串处理的头文件

    头文件

    描        述

    <string>

    为字符串类型提供支持和定义,包括单字节字符串(由char组成)的string和多字节字符串(由wchar_t组成)

    <cctype>

    单字节字符类别

    <cwctype>

    多字节字符类别

    <cstring>

    为处理非空字节序列和内存块提供函数。这不同于对应的标准C库头文件,几个C样式字符串的一般C库函数被返回值为const和非const的函数对替代了

    <cwchar>

    为处理、执行I/O和转换多字节字符序列提供函数,这不同于对应的标准C库头文件,几个多字节C样式字符串操作的一般C库函数被返回值为const和非const的函数对替代了。

    <cstdlib>

    为把单字节字符串转换为数值、在多字节字符和多字节字符串之间转换提供函数

      C6. 定义容器类的模板的头文件

    头文件

    描        述

    <vector>

    定义vector序列模板,这是一个大小可以重新设置的数组类型,比普通数组更安全、更灵活

    <list>

    定义list序列模板,这是一个序列的链表,常常在任意位置插入和删除元素

    <deque>

    定义deque序列模板,支持在开始和结尾的高效插入和删除操作

    <queue>

    为队列(先进先出)数据结构定义序列适配器queue和priority_queue

    <stack>

    为堆栈(后进先出)数据结构定义序列适配器stack

    <map>

    map是一个关联容器类型,允许根据键值是唯一的,且按照升序存储。multimap类似于map,但键不是唯一的。

    <set>

    set是一个关联容器类型,用于以升序方式存储唯一值。multiset类似于set,但是值不必是唯一的。

    <bitset>

    为固定长度的位序列定义bitset模板,它可以看作固定长度的紧凑型bool数组

      C7. 支持迭代器的头文件

    头文件

    描        述

    <iterator>

    给迭代器提供定义和支持

      C8. 有关算法的头文件

    头文件

    描        述

    <algorithm>

    提供一组基于算法的函数,包括置换、排序、合并和搜索

    <cstdlib>

    声明C标准库函数bsearch()和qsort(),进行搜索和排序

    <ciso646>

    允许在代码中使用and代替&&

      C9. 有关数值操作的头文件

    头文件

    描        述

    <complex>

    支持复杂数值的定义和操作

    <valarray>

    支持数值矢量的操作

    <numeric>

    在数值序列上定义一组一般数学操作,例如accumulate和inner_product

    <cmath>

    这是C数学库,其中还附加了重载函数,以支持C++约定

    <cstdlib>

    提供的函数可以提取整数的绝对值,对整数进行取余数操作

      C10. 有关本地化的头文件

    头文件

    描        述

    <locale>

    提供的本地化包括字符类别、排序序列以及货币和日期表示。

    <clocale>

    对本地化提供C样式支持

      C++标准库的所有头文件都没有扩展名。C++标准库以<cname>形式的标准头文件提供。在 <cname>形式标准的头文件中,与宏相关的名称在全局作用域中定义,其他名称在std命名空间中声明。在C++中还可以使用name.h形式的标准C库头文件名。


      二、标准模板库STL简介[1]

      STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间。

      STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),几乎所有的代码都采用了模板类和模版函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。在C++标准中,STL被组织为下面的13个头文件:<algorithm>、<deque>、<functional>、<iterator>、<vector>、<list>、<map>、<memory>、<numeric>、<queue>、<set>、<stack>和<utility>。

      1、算法

      函数库对数据类型的选择对其可重用性起着至关重要的作用。举例来说,一个求方根的函数,在使用浮点数作为其参数类型的情况下的可重用性肯定比使用整型作为它的参数类性要高。而C++通过模板的机制允许推迟对某些类型的选择,直到真正想使用模板或者说对模板进行特化的时候,STL就利用了这一点提供了相当多的有用算法。它是在一个有效的框架中完成这些算法的——可以将所有的类型划分为少数的几类,然后就可以在模版的参数中使用一种类型替换掉同一种类中的其他类型。

      STL提供了大约100个实现算法的模版函数,比如算法for_each将为指定序列中的每一个元素调用指定的函数,stable_sort以你所指定的规则对序列进行稳定性排序等等。这样一来,只要熟悉了STL之后,许多代码可以被大大的化简,只需要通过调用一两个算法模板,就可以完成所需要的功能并大大地提升效率。

      算法部分主要由头文件<algorithm>,<numeric>和<functional>组成。<algorithm>是所有STL头文件中最大的一个(尽管它很好理解),它是由一大堆模版函数组成的,可以认为每个函数在很大程度上都是独立的,其中常用到的功能范围涉及到比较、交换、查找、遍历操作、复制、修改、移除、反转、排序、合并等等。<numeric>体积很小,只包括几个在序列上面进行简单数学运算的模板函数,包括加法和乘法在序列上的一些操作。<functional>中则定义了一些模板类,用以声明函数对象。

      2、容器

      在实际的开发过程中,数据结构本身的重要性不会逊于操作于数据结构的算法的重要性,当程序中存在着对时间要求很高的部分时,数据结构的选择就显得更加重要。

      经典的数据结构数量有限,但是我们常常重复着一些为了实现向量、链表等结构而编写的代码,这些代码都十分相似,只是为了适应不同数据的变化而在细节上有所出入。STL容器就为我们提供了这样的方便,它允许我们重复利用已有的实现构造自己的特定类型下的数据结构,通过设置一些模版类,STL容器对最常用的数据结构提供了支持,这些模板的参数允许我们指定容器中元素的数据类型,可以将我们许多重复而乏味的工作简化。

      容器部分主要由头文件<vector>,<list>,<deque>,<set>,<map>,<stack>和<queue>组成。对于常用的一些容器和容器适配器(可以看作由其它容器实现的容器),可以通过下表总结一下它们和相应头文件的对应关系。

    数据结构

    描述

    实现头文件

    向量(vector)

    连续存储的元素

    <vector>

    列表(list)

    由节点组成的双向链表,每个结点包含着一个元素

    <list>

    双队列(deque)

    连续存储的指向不同元素的指针所组成的数组

    <deque>

    集合(set)

    由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种作用于元素对的谓词排列,没有两个不同的元素能够拥有相同的次序

    <set>

    多重集合(multiset)

    允许存在两个次序相等的元素的集合

    <set>

    (stack)

    后进先出的值的排列

    <stack>

    队列(queue)

    先进先出的执的排列

    <queue>

    优先队列(priority_queue)

    元素的次序是由作用于所存储的值对上的某种谓词决定的的一种队列

    <queue>

    映射(map)

    {键,值}对组成的集合,以某种作用于键对上的谓词排列

    <map>

    多重映射(multimap)

    允许键对有相等的次序的映射

    <map>

      3、迭代器

      迭代器从作用上来说是最基本的部分,可是理解起来比前两者都要费力一些。软件设计有一个基本原则,所有的问题都可以通过引进一个间接层来简化,这种简化在STL中就是用迭代器来完成的。概括来说,迭代器在STL中用来将算法和容器联系起来,起着一种黏和剂的作用。几乎STL提供的所有算法都是通过迭代器存取元素序列进行工作的,每一个容器都定义了其本身所专有的迭代器,用以存取容器中的元素。

      迭代器部分主要由头文件<utility>,<iterator>和<memory>组成。<utility>是一个很小的头文件,它包括了贯穿使用在STL中的几个模板的声明,<iterator>中提供了迭代器使用的许多方法,而对于<memory>的描述则十分的困难,它以不同寻常的方式为容器中的元素分配存储空间,同时也为某些算法执行期间产生的临时对象提供机制,<memory>中的主要部分是模板类allocator,它负责产生所有容器中的默认分配器。


      三、后记

      对于STL的使用,也普遍存在着两种观点。第一种认为STL的最大作用在于充当经典的数据结构和算法教材,因为它的源代码涉及了许多具体实现方面的问题。第二种则认为STL的初衷乃是为了简化设计,避免重复劳动,提高编程效率,因此应该是“应用至上”的,对于源代码则不必深究。对于初学者而言,通过分析源代码,提高对其应用的理解其意义也不同凡响。

      曾经想着设计几个上机题目,让同学们体会一下利用STL编程。写出一个适合初学者的,规模又不能太大,还要有足够引导的题目,实在是一件非常费时费力的事,加上有其他事还得应急,就将此帐欠下,日后再说。要给同学们提的建议是,不少C++的经典教材对STL都有非常好的讲解,可以选一本去读。在读书时,要开始学着挑着读,跳着读,不必从头到尾,逐页去读。在这个阶段,可以首先学习迭代器utility、在C++编程中建议替代数组的vector,以及实现双向链表的list。vector和list与本周任务1和任务2似乎有些相关。再者,发扬我们一贯特别能实践的精神,及时找些题目或者自编题目进行实践。


    [1] 这段文字在http://www.chinaitpower.com/A/2001-12-05/6859.html基础上改编。


    展开全文
  • c语言标准库

    千次阅读 2017-09-27 17:00:52
    标准库(Standard Library)是C语言重要的一部分,不过学习C语言这么长时间,都没有细致的了解过标准库到底中包含哪些内容,这几天打算来仔细看看这部分内容。 C语言标准库有各种不同的实现,比如最著名的glibc,...
  • HAL库与标准库的理解

    千次阅读 2020-12-22 21:03:58
    HAL库的学习HAL库和标准库的原理区别串口通信实验包含的文件区别具体代码区别总结 HAL库和标准库的原理区别 HAL简介: == HAL库 ==是st公司为了更方便地进行stm32之间的移植而开发的库,通用性很强,在不同的两款stm...
  • STM32标准库和HAL库的比较

    千次阅读 2020-09-12 00:34:58
    “健康守护者”——STM32标准库和HAL库的比较 使用STM32芯片的时候呢,大家可能都喜欢用库,什么标准库啦,HAL库啦,拿到了就一股脑的用,也没有深究其区别,这样出BUG的时候就只能两手一摊,程序瘫痪了,所以今天...
  • STM32标准库与HAL库总结

    万次阅读 2019-05-16 15:09:46
    其中标准库与HAL库最常用,LL库只是最近新添加的。 标准外设库(Standard Peripherals Library)是对STM32芯片的一个完整的封装,包括所有标准器件外设的器件驱动器。这应该是目前使用最多的ST库,几乎全部使用...
  • Python标准库之string 库

    千次阅读 2019-09-26 19:35:46
    Python Standard Library based on Python 3.7.3 ... Python标准库 - 文本处理服务 - string库 Source code: Lib/string.py Link: https://docs.python.org/3/library/string.html#module-st...
  • C 标准库头文件

    千次阅读 2019-02-28 08:04:12
    C标准库头文件
  • RUST标准库

    千次阅读 2019-02-23 11:28:49
    Rust标准库 std::thread Rust 通过 spawn 函数提供了创建本地操作系统(native OS)线程的机制,该函数的参数是一个转移闭包(moving closure)。 Rust默认会开4个线程,新开的线程另算。 use std::thread; static ...
  • C++标准库和模板库

    千次阅读 2017-01-12 17:15:41
    C++标准库的内容总共在50个标准头文件中定义。 在C++开发中,要尽可能地利用标准库完成。 这样做的直接好处包括: (1)成本:已经作为标准提供,何苦再花费时间、人力重新开发呢; (2)质量:标准库的都是经过严格...
  • c标准库总结

    千次阅读 2019-03-14 10:28:54
    c标准库 前言 学习c语言十几年了,却从来没有完整的将c标准库看一看,我想在这一点上我是欠缺的。作为一个技术人员,无论什么时候都不能忘记自己最擅长的技能,这次借一个偶然的契机,翻一翻c标准库,希望以后自己在...
  • Python标准库之random库

    千次阅读 2019-03-06 23:04:28
    random库是用于产生并运用随机数的标准库,以下整理了9个random库常用随机函数。 按下表中序号的不同颜色区分函数功能:红色序号代表获取随机小数,绿色序号代表获取随机整数,橘色序号代表对序列类型的随机操作。 ...
  • C++ STL标准模板库-优秀的C++标准库

    千人学习 2018-08-23 00:45:49
    STL是Standard Template Library的简称,中文名标准模板,是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室开发的 ,是一个具有工业强度的,高效的C++,STL早已是ANSI/ISO C++标准中的一部分。...
  • STM32标准库和HAL库的区别

    千次阅读 2020-10-26 14:47:55
    大体看了下,标准库移植起来没有HAL库方便。 用HAL库移植起来不需要改动,怪不得ST推HAL库 https://blog.csdn.net/ice_masters/article/details/105644704 ...怪不得这里说没有可移植性,我最开始看到这句的...
  • Python标准库—urllib和urllib3

    万次阅读 2019-06-04 21:04:54
    urllib是Python中请求url连接的官方标准库,在Python2中主要为urllib和urllib2,在Python3中整合成了urllib。urllib中一共有四个模块,分别如下: request:主要负责构造和发起网络请求,定义了适用于在各种复杂情况...
  • Python标准库介绍

    千次阅读 2014-10-25 10:48:36
    在《Python语言参考手册》中描述了Python的语法和语义,而本手册主要介绍了Python标准库的内容和使用,也介绍了一些发行库里可选的组件库。 Python标准库包含的内容是非常广泛的,通过标准库的目录长度和内容就可...
  • python 常用标准库和扩展库

    千次阅读 2018-05-06 22:04:53
    常用标准库标准库 说明 builtins 内建函数默认加载 os 操作系统接口 sys Python自身的运行环境 functools 常用的工具 json 编码和解码 JSON 对象 logging 记录日志,调试 multiprocessing 多进程 threading 多线程 ...
  • C++11标准库chrono库使用

    千次阅读 2018-02-10 17:21:43
    chrono是C++11新加入的方便时间日期操作的标准库,它既是相应的头文件名称,也是std命名空间下的一个子命名空间,所有时间日期相关定义均在std::chrono命名空间下。通过这个新的标准库,可以非常方便进行时间日期...
  • Python常用标准库

    千次阅读 2019-06-10 23:02:18
    常用标准库: os操作系统, time时间, random随机, pymysql连接数据库, threading线程,multiprocessing进程,queue队列。 第三方库: django和flask也是第三方库,requests,virtualenv,selenium,scrapy,...
  • python标准库和常用的扩展库

    千次阅读 2017-08-13 11:46:40
    python标准库和常用的扩展库
  • C++标准库的内容总共在50个标准头文件中定义。在C++开发中,要尽可能地利用标准库完成。这样做的直接好处有:   (1)成本:已经作为标准提供,何苦再花费时间、人力重新开发呢;  (2)质量:标准库的都是经过...
  • Python标准库01 正则表达式 (re包)

    万次阅读 多人点赞 2020-11-04 08:08:00
    我将从正则表达式开始讲Python的标准库。正则表达式是文字处理中常用的工具,而且不需要额外的系统知识或经验。我们会把系统相关的包放在后面讲解。正则表达式(regular expre...
  • Boost标准库安装

    千次阅读 2016-09-14 16:49:10
     Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一。 Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。在C++社区中影响甚大,是...
  • C 标准库

    千次阅读 2012-12-12 21:07:52
    C 标准库其实是一个标准。 glibc 基于类unix系统的运行时库(是由一些列的库组成),它除了实现C标准库之外,还包含POSIX API。一个具体的表现是它包含了unistd.h。 glibc中某些c标准库函数同时也是POSIX API。 ...
  • Perl 标准库

    千次阅读 2014-11-27 16:46:35
    perl标准库地址:ftp://ftp.funet.fi/pub/languages/perl/CPAN/modules/by-module/
  • 论STM32标准库程序修改为HAL库

    千次阅读 2017-08-28 10:42:02
    标准库占绝大多数,自己买的板子跟的资料也一般是标准库,HAL库很少,不过要是使用STM32CubeMx配置,那么就是使用的HAL库了,而参考资料是标准库的,就没有办法用。 注意:  1. 标准库与HAL库不兼容,不要想着...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 123,837
精华内容 49,534
关键字:

标准库