fbpx
维基百科

Boost C++ Libraries

Boost C++ 函式庫(Libraries)是一組擴充C++功能的經過同行評審(Peer-reviewed)且開放源碼程式庫。大多數的函式為了能夠以開放源碼或者封閉專案的方式運作,而授權於Boost軟體授權條款(Boost Software License)之下。許多Boost的開發人員是來自C++標準委員會,而部份的Boost函式庫成為C++的TR1標準之一。[2]

Boost C++ Libraries
当前版本
  • 1.84.0 (2023年12月13日;穩定版本)[1]
源代码库
  • github.com/boostorg/boost
类型函式庫
许可协议Boost许可证
网站www.boost.org

為了要確保函式庫的效率與彈性,Boost廣泛的使用模板(template)功能。而它是針對各式領域的C++使用者與應用領域(Application Domain)上,包含的函式庫類別從像smart_ptr 函式庫(页面存档备份,存于互联网档案馆)這種類通用函式庫,到像是檔案系統的作業系統抽象層,甚至能夠利用Boost來開發額外的函式庫或是給進階的C++使用者利用,像是MPL(页面存档备份,存于互联网档案馆)。

內容 编辑

  • 演算法
  • 并行计算
  • 容器
    • array(页面存档备份,存于互联网档案馆) - STL的数组容器
    • Boost Graph Library (BGL)(页面存档备份,存于互联网档案馆) - 通用的图容器,组件和算法
    • multi-array(页面存档备份,存于互联网档案馆) - N维数组
    • multi-index containers(页面存档备份,存于互联网档案馆) - 多索引容器
    • pointer containers(页面存档备份,存于互联网档案馆) - 指针容器
    • - 属性Map
    • variant(页面存档备份,存于互联网档案馆) - 安全的,基于泛型的,支持访问者模式的联合
    • fusion(页面存档备份,存于互联网档案馆) - 基于tuple的容器和算法集合
  • 正当性與測試
    • concept check(页面存档备份,存于互联网档案馆) - 檢查模板參數是否滿足模板的要求
    • static assert(页面存档备份,存于互联网档案馆) - 編譯期的斷言檢查
    • - C++ 单元测试框架
  • 資料結構
    • dynamic_bitset(页面存档备份,存于互联网档案馆) - std::bitset-的動態轉型
  • 仿函式與高階函式(含無名関数)
  • 泛型
  • I/O
  • 語言之間的支援(Python用)
  • 迭代器
  • 数学和計算
  • 内存(memory)
    • pool(页面存档备份,存于互联网档案馆) - 内存池,boost提供4种内存池模型供使用:pool、object_pool、singleton_pool、pool_allocator/fast_pool_allocator
    • smart_ptr(页面存档备份,存于互联网档案馆) - boost的smart_ptr中提供了4种智能指针,作为std::auto_ptr的补充
      • - 具作用域指针,与std::auto_ptr类似,但不能转让所有权,用于确保离开作用域能夠正确地删除动态分配的对象
      • - 配合scoped_ptr使用
      • -
      • - 配合shared_ptr使用
      • - shared_ptr 的观察者,避免shared_ptr循环引用,是一种辅助指针
      • - 比 shared_ptr 更好的智能指针
    • utility(页面存档备份,存于互联网档案馆) - 以下是utility类型的定义。
      • -
      • checked delete(页面存档备份,存于互联网档案馆) - 保证在摧毀一个对象时,必须对该对象的类型有充份了解
      • next and prior functions(页面存档备份,存于互联网档案馆) -
      • noncopyable(页面存档备份,存于互联网档案馆) - 把copy constructor和assign operaotr 宣告为private,不加以实现
      • addressof(页面存档备份,存于互联网档案馆) - 用于获得变量的地址
      • result_of(页面存档备份,存于互联网档案馆) - 指涉函式回返型別
  • 序列化
  • 語法分析器
  • 預處理元編程
  • 字串與文字處理(正規表示式等)
    • - lexical_cast 类別模板
    • format(页面存档备份,存于互联网档案馆) - 文字格式化,类似printf
    • iostreams(页面存档备份,存于互联网档案馆) - 新式iostream的補強
    • - 正規表示法(Regular expression)
    • Spirit英语Spirit Parser Framework - 根据EBNF规则对文件进行分析
    • string algorithms(页面存档备份,存于互联网档案馆) - 文字列演算法
    • tokenizer(页面存档备份,存于互联网档案馆) - 把字串序列分解成一系列标记(tokens)
    • wave(页面存档备份,存于互联网档案馆) -
  • 模板元编程(Template Metaprogramming)
    • mpl(页面存档备份,存于互联网档案馆) - 模板元编程框架
    • static assert(页面存档备份,存于互联网档案馆) - 靜態斷言
    • - 型別的基本属性的模板
  • 其他

范例 编辑

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

线性代数 – uBLAS 编辑

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 随机数库(页面存档备份,存于互联网档案馆)。

多執行緒 – Boost.Thread 编辑

範例碼演示建立執行緒:

#include <boost/thread/thread.hpp> #include <iostream> using namespace std;  void hello_world()  {  cout << "Hello world, I'm a thread!" << endl; } int main(int argc, char* argv[]) {  // 開始一條使用 "hello_world" function 的新執行緒  boost::thread my_thread(&hello_world);  // 等待執行緒完成工作  my_thread.join();    return 0; } 
  • Introduction to Boost.Threads(页面存档备份,存于互联网档案馆) in Dr. Dobb's Journal. (2002)
  • Boost.Threads API reference(页面存档备份,存于互联网档案馆)。
  • threadpool library(页面存档备份,存于互联网档案馆) based on Boost.Thread

引用 编辑

  1. ^ Version 1.84.0. 
  2. ^ Library Technical Report. [2008-08-07]. (原始内容于2017-12-11). 

外部連結 编辑

boost, libraries, boost, 函式庫, libraries, 是一組擴充c, 功能的經過同行評審, peer, reviewed, 且開放源碼程式庫, 大多數的函式為了能夠以開放源碼或者封閉專案的方式運作, 而授權於boost軟體授權條款, boost, software, license, 之下, 許多boost的開發人員是來自c, 標準委員會, 而部份的boost函式庫成為c, 的tr1標準之一, 当前版本1, 2023年12月13日, 穩定版本, 源代码库github, boostorg,. Boost C 函式庫 Libraries 是一組擴充C 功能的經過同行評審 Peer reviewed 且開放源碼程式庫 大多數的函式為了能夠以開放源碼或者封閉專案的方式運作 而授權於Boost軟體授權條款 Boost Software License 之下 許多Boost的開發人員是來自C 標準委員會 而部份的Boost函式庫成為C 的TR1標準之一 2 Boost C Libraries当前版本1 84 0 2023年12月13日 穩定版本 1 源代码库github wbr com wbr boostorg wbr boost类型函式庫许可协议Boost许可证网站www wbr boost wbr org為了要確保函式庫的效率與彈性 Boost廣泛的使用模板 template 功能 而它是針對各式領域的C 使用者與應用領域 Application Domain 上 包含的函式庫類別從像smart ptr 函式庫 页面存档备份 存于互联网档案馆 這種類通用函式庫 到像是檔案系統的作業系統抽象層 甚至能夠利用Boost來開發額外的函式庫或是給進階的C 使用者利用 像是MPL 页面存档备份 存于互联网档案馆 目录 1 內容 2 范例 2 1 线性代数 uBLAS 2 2 随机数产生 Boost Random 2 3 多執行緒 Boost Thread 3 引用 4 外部連結內容 编辑演算法 并行计算 thread 页面存档备份 存于互联网档案馆 執行緒 context 页面存档备份 存于互联网档案馆 用戶層級上下文交換 容器 array 页面存档备份 存于互联网档案馆 STL的数组容器 Boost Graph Library BGL 页面存档备份 存于互联网档案馆 通用的图容器 组件和算法 multi array 页面存档备份 存于互联网档案馆 N维数组 multi index containers 页面存档备份 存于互联网档案馆 多索引容器 pointer containers 页面存档备份 存于互联网档案馆 指针容器 property map 属性Map variant 页面存档备份 存于互联网档案馆 安全的 基于泛型的 支持访问者模式的联合 fusion 页面存档备份 存于互联网档案馆 基于tuple的容器和算法集合 正当性與測試 concept check 页面存档备份 存于互联网档案馆 檢查模板參數是否滿足模板的要求 static assert 页面存档备份 存于互联网档案馆 編譯期的斷言檢查 Boost Test Library C 单元测试框架 資料結構 dynamic bitset 页面存档备份 存于互联网档案馆 std bitset 的動態轉型 仿函式與高階函式 含無名関数 bind 页面存档备份 存于互联网档案馆 and mem fn 页面存档备份 存于互联网档案馆 函式的綁定 function 页面存档备份 存于互联网档案馆 函式 functional 页面存档备份 存于互联网档案馆 C 標準函式之強化 包含以下的内容 function object traits 页面存档备份 存于互联网档案馆 negators 页面存档备份 存于互联网档案馆 binders 页面存档备份 存于互联网档案馆 adapters for pointers to functions 页面存档备份 存于互联网档案馆 adapters for pointers to member functions 页面存档备份 存于互联网档案馆 hash 页面存档备份 存于互联网档案馆 C Technical Report 1 TR1 定義的雜湊表 lambda 页面存档备份 存于互联网档案馆 l演算的實作 ref 页面存档备份 存于互联网档案馆 標準C 参照 call by reference 的加強 特別強化與函式的呼叫 result of 页面存档备份 存于互联网档案馆 函式型別與回傳值 signals2 页面存档备份 存于互联网档案馆 信号和槽回调的实现托管 泛型 圖 I O 語言之間的支援 Python用 迭代器 iterators 页面存档备份 存于互联网档案馆 operators 页面存档备份 存于互联网档案馆 tokenizer 页面存档备份 存于互联网档案馆 数学和計算 内存 memory pool 页面存档备份 存于互联网档案馆 内存池 boost提供4种内存池模型供使用 pool object pool singleton pool pool allocator fast pool allocator smart ptr 页面存档备份 存于互联网档案馆 boost的smart ptr中提供了4种智能指针 作为std auto ptr的补充 scoped ptr 具作用域指针 与std auto ptr类似 但不能转让所有权 用于确保离开作用域能夠正确地删除动态分配的对象 scoped array 配合scoped ptr使用 shared ptr shared array 配合shared ptr使用 weak ptr shared ptr 的观察者 避免shared ptr循环引用 是一种辅助指针 intrusive ptr 比 shared ptr 更好的智能指针 utility 页面存档备份 存于互联网档案馆 以下是utility类型的定义 base from member idiom checked delete 页面存档备份 存于互联网档案馆 保证在摧毀一个对象时 必须对该对象的类型有充份了解 next and prior functions 页面存档备份 存于互联网档案馆 noncopyable 页面存档备份 存于互联网档案馆 把copy constructor和assign operaotr 宣告为private 不加以实现 addressof 页面存档备份 存于互联网档案馆 用于获得变量的地址 result of 页面存档备份 存于互联网档案馆 指涉函式回返型別 序列化 語法分析器 預處理元編程 字串與文字處理 正規表示式等 lexical cast lexical cast 类別模板 format 页面存档备份 存于互联网档案馆 文字格式化 类似printf iostreams 页面存档备份 存于互联网档案馆 新式iostream的補強 regex 正規表示法 Regular expression Spirit 英语 Spirit Parser Framework 根据EBNF规则对文件进行分析 string algorithms 页面存档备份 存于互联网档案馆 文字列演算法 tokenizer 页面存档备份 存于互联网档案馆 把字串序列分解成一系列标记 tokens wave 页面存档备份 存于互联网档案馆 模板元编程 Template Metaprogramming mpl 页面存档备份 存于互联网档案馆 模板元编程框架 static assert 页面存档备份 存于互联网档案馆 靜態斷言 type traits 型別的基本属性的模板 其他范例 编辑现有的 Boost 包含大约150种不同的函数库 以下面几项做范例 线性代数 uBLAS 编辑 Boost 包含了 uBLAS 线性代数函数库 能够藉由基本函数库子函数 BLAS 来支持向量与矩阵形运算 此范例表示如何矩阵与向量作乘积 include lt boost numeric ublas vector hpp gt include lt boost numeric ublas matrix hpp gt include lt boost numeric ublas io hpp gt include lt iostream gt using namespace boost numeric ublas 举例 y Ax int main vector lt double gt x 2 x 0 1 x 1 2 matrix lt double gt A 2 2 A 0 0 0 A 0 1 1 A 1 0 2 A 1 1 3 vector lt double gt y prod A x std cout lt lt y lt lt std endl return 0 随机数产生 Boost Random 编辑 Boost 也提供独立分布的模拟随机与 PRNG 独立性的机率分布 而这些能夠具体的建立产生器 此范例表示如何使用 Mersenne Twister 演算法来产生随机 include lt boost random hpp gt include lt ctime gt using namespace boost double SampleNormal double mean double sigma 建立一个 Mersenne twister 随机数产生器 使用 Unix 时间设定 seed static mt19937 rng static cast lt unsigned gt std time 0 选择高斯机率分布 normal distribution lt double gt norm dist mean sigma 使用 function 的形式 生成随机数据产生器 variate generator lt mt19937 amp normal distribution lt double gt gt normal sampler rng norm dist 传回样本分布结果 return normal sampler 更详细的说明请参阅 Boost 随机数库 页面存档备份 存于互联网档案馆 多執行緒 Boost Thread 编辑 範例碼演示建立執行緒 include lt boost thread thread hpp gt include lt iostream gt using namespace std void hello world cout lt lt Hello world I m a thread lt lt endl int main int argc char argv 開始一條使用 hello world function 的新執行緒 boost thread my thread amp hello world 等待執行緒完成工作 my thread join return 0 Introduction to Boost Threads 页面存档备份 存于互联网档案馆 in Dr Dobb s Journal 2002 Boost Threads API reference 页面存档备份 存于互联网档案馆 threadpool library 页面存档备份 存于互联网档案馆 based on Boost Thread引用 编辑 nbsp Free software主题 Version 1 84 0 Library Technical Report 2008 08 07 原始内容存档于2017 12 11 外部連結 编辑維基教科書中的相關電子教程 Libraries BoostBoost 官方網站 页面存档备份 存于互联网档案馆 Smart Pointers to boost your code Building Boost libraries 页面存档备份 存于互联网档案馆 Boost 中文翻译 页面存档备份 存于互联网档案馆 在线阅读 取自 https zh wikipedia org w index php title Boost C 2B 2B Libraries amp oldid 73741249 许可证, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。