Boost C++ Libraries

✍ dations ◷ 2025-06-08 16:10:14 #Boost C++ Libraries

Boost C++ 库(Libraries)是一组扩展C++功能的经过同行评审(Peer-reviewed)且开放源码程序库。大多数的函数为了能够以开放源码或者封闭项目的方式运作,而许可于Boost软件许可协议(Boost Software License)之下。许多Boost的开发人员是来自C++标准委员会,而部分的Boost库成为C++的TR1标准之一。

为了要确保库的效率与弹性,Boost广泛的使用模板(template)功能。而它是针对各式领域的C++用户与应用领域(Application Domain)上,包含的库类别从像smart_ptr 库(页面存档备份,存于互联网档案馆)这种类通用库,到像是文件系统的操作系统抽象层,甚至能够利用Boost来开发额外的库或是给高级的C++用户利用,像是MPL(页面存档备份,存于互联网档案馆)。

现有的 Boost 包含大约150种不同的函数库,以下面几项做范例:

Boost 包含了 uBLAS 线性代数函数库,能够借由基本函数库子函数(BLAS)来支持向量与矩阵形运算。

 #include <boost/numeric/ublas/vector.hpp>#include <boost/numeric/ublas/matrix.hpp>#include <boost/numeric/ublas/io.hpp>#include <iostream>using namespace boost::numeric::ublas;/* 举例 "y = Ax"  */int main () {      vector<double> x (2);      x(0) = 1; x(1) = 2;       matrix<double> A(2,2);      A(0,0) = 0; A(0,1) = 1;      A(1,0) = 2; A(1,1) = 3;      vector<double> y = prod(A, x);      std::cout << y << std::endl;      return 0;}

随机数产生 – Boost.Random

Boost 也提供独立分布的模拟随机与 PRNG 独立性的机率分布,而这些能够具体的创建产生器。

#include <boost/random.hpp>#include <ctime>using namespace boost;double SampleNormal (double mean, double sigma){    // 建立一个 Mersenne twister 随机数产生器    // 使用 Unix 时间设定 seed    static mt19937 rng(static_cast<unsigned> (std::time(0)));    // 选择高斯机率分布    normal_distribution<double> norm_dist(mean, sigma);    // 使用 function 的形式,生成随机数据产生器    variate_generator<mt19937&, normal_distribution<double> >  normal_sampler(rng, norm_dist);    // 传回样本分布结果    return normal_sampler();}

更详细的说明请参阅 Boost 随机数库(页面存档备份,存于互联网档案馆)。

示例码演示创建线程:

相关