C++标准库概述


在使用 C++ 编程中,最重要的库就是 C++ 标准库。C++ 标准库的核心是泛型容器和泛型算法,库中的这一子集通常称为标准模板库(Standard Template Library, STL),因为这一部分大量使用了模板。STL 的威力在于提供了泛型容器和泛型算法,使大部分算法可用于大部分容器,而无论容器中保存的数据类型是什么。性能是 STL 中非常重要的一部分。STL 的目标是要让 STL 容器和算法和手工编写的代码速度相当快。

编码原则

标准库大量使用了C++的模板特性和运算符重载特性,标准模板库也是这样。

C++标准库概述

字符串

从技术角度,C++ string实际上是basic_string模板char实例化的typedef名称。然而,不需要关注这些细节。只要像非模板类那样使用string即可。

正则表达式

I/O流

I/O功能在几个头文件中定义:

<fstream>
<iomanip>
<ios>
<iosfwd>
<iostream>
<istream>
<ostream>
<sstream>
<streambuf>
<strstream>

智能指针

C++用智能指针unique_ptrshared_ptrweek_ptr解决内存管理问题。

shared_ptrweek_ptr是线程安全的,都在<memory>中定义。

异常

C++标准库提供了一个异常的类层次结构,在程序中可以使用这些类,也可以通过继承方式创建自己的异常类型。

异常在以下头文件中定义:

<exception>
<stdexcept>
<system_error>

数学工具

虽然这些类模板化了,可以用于任何类型,但是一般不认为这些类是标准模板库的一部分。

  • <complex>提供了一个复数类complex,提供了对实部和虚部的数的操作抽象。

  • <ratio>有理数运算库,可以精确地表示任何由分子和分母定义的有限有理数。

  • <valarray>提供了valarray,和vector类似,但是对高性能数值应用做了特别的优化,提供了表示矢量切片概念的相关类。通过这些构件,可以构建执行矩阵数学运算的类。不过,没有内建的矩阵类。Boost这样的第三方库提供了矩阵支持。

获取数值极限的标准方式。

<limts>中的numeric_limits模板。

cout << "Max int value: " << numeric_limits<int>::max() << endl;
cout << "Min int value: " << numeric_limits<int>::min() << endl;
cout << "Lowest int value: " << numeric_limits<int>::lowest() << endl;
cout << "Max double value: " << numeric_limits<double>::max() << endl;
cout << "Min double value: " << numeric_limits<double>::min() << endl;
cout << "Lowest double value: " << numeric_limits<double>::lowest() << endl;

时间工具

<chrono>简化了时间相关的操作,特定时间间隔的定时操作和定时相关的操作执行。

随机数

srand()rand()只提供了非常初级的随机数,也无法修改生成随机数的分布。

C++11添加了一个完善的随机数库<random>,带有随机数引擎、随机数引擎适配器以及随机数分布。

通过<random>可以生成特定问题域的随机数,例如正态分布、负指数分布。

初始化列表

<initializer_list>编写参数数目可变的函数。

Pair和Tuple

  • <utility>定义了pair模板,可以用于存储两种不同类型的元素。这称为存储异构元素。

  • <tuple>定义的tuplepair的一种泛化,是一个固定大小的序列,元组的元素可以是异构的。

函数对象

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值