C++常用库简介

为熟练使用C++创建项目,应掌握常用的C++库。现总结常用的C++库如下:

数学库

gsl(GNU Scientific Library):GUN科学运算库

Blitz++:高效率的数值计算函数库

它的设计目的是希望建立一套既具像C++ 一样方便,同时又比Fortran速度更快的数值计算环境。通常,用C++所写出的数值程序, 比 Fortran慢20%左右,因此Blitz++正是要改掉这个缺点。方法是利用C++的template 技术,程序执行甚至可以比Fortran更快。

MTL(Matrix Template Library):矩阵模板库

专注于线性代数相关的计算任务,如各种形式矩阵的生成(对角,共轭,稀疏,对称等),相关的计算,变换,以及与一维向量的运算。

POOMA

一个免费的高性能的C++库,用于处理并行式科学计算。POOMA的面向对象设计方便了快速的程 序开发,对并行机器进行了优化以达到最高的效率,方便在工业和研究环境中使用。

CGAL:计算几何算法库

Computational Geometry Algorithms Library的目的是把在计 算几何方面的大部分重要的解决方案和方法以C++库的形式提供给工业和学术界的用户。
是一个大型C + +库的几何数据结构和算法,如Delaunay三角网,网格生成,布尔运算的多边形,以及各种几何处理算法。 CGAL是用来在各个领域:计算机图形学,科学可视化,计算机辅助设计与建模,地理信息系统,分子生物学,医学影像学,机器人学和运动规划,和数值方法。

Matlab的开源高仿 Octave

旨在解决线性和非线性的数值计算问题。也是跨平台的,源码中用了大量m4语言。

C++符号计算库 GiNaC

Eigen -目前较活跃

线性代数、矩阵、向量操作等运算的C++库。推荐使用。

C/C++数值计算库 mygsl

mygsl是一个基于GSL库的个性化开源数值计算项目.

IMSL

软件名称 IMSL C Numerical Library(不兼容vc6 编译器)。

分为统计库和数学库两部分。数学库包含应用数学和特殊函数。IMSL 程序库已成为数值分析解决方案的工业标准。 IMSL 程序库提供最完整与最值得信赖的函数库。 IMSL 数值程序库提供目前世界上最广泛被使用的 IMSL 算法,有超过 370 验证过、最正确与 thread-safe 的数学与统计程序。 IMSL FORTRAN 程序库提供新一代以 FORTRAN 90 为程序库基础的程序,能展现出最佳化的演算法能力应用于多处理器与其它高效能运算系统。

网络库

ACE

庞大、复杂,适合大型项目。开源、免费,不依赖第三方库,支持跨平台。

Asio

Asio基于Boost开发的异步IO库,封装了Socket,简化基于socket程序的开发。

开源、免费,支持跨平台。

POCO

POCO C++ Libraries 提供一套 C++ 的类库用以开发基于网络的可移植的应用程序,功能涉及线程、线程同步、文件系统访问、流操作、共享库和类加载、套接字以及网络协议包括:HTTP、 FTP、SMTP 等;其本身还包含一个 HTTP 服务器,提供 XML 的解析和 SQL 数据库的访问接口。POCO库的模块化、高效的设计及实现使得POCO特别适合嵌入式开发。在嵌入式开发领域,由于C++既适合底层(设备I/O、中断处理等)和高层面向对象开发,越来越流行。

libevent

Libevent是一个轻量级的开源高性能网络库,从它的官网标题:libevent-an event notification library就能知道它的机制是采用事件触发,封装了以下三种事件的响应:IO事件,定时器事件,信号事件。select模型来实现跨平台的操作,Windows环境下支持IOCP。Google的开源WEB浏览器Chromium在Mac和Linux版本中,也使用了Libevent,足见该库的质量。

libev

libev和libevent很像,按照作者的介绍,可以作为libevent的替代者,能够提供更高的性能。

libev是一个高性能事件循环,所实现的功能就是一个强大的reactor。

c++ sockets library

封装了sockets C API的C++类库。

支持SSL, IPv6, tcp 和 udp sockets, sctp sockets, http协议, 高度可定制的错误处理。

libcurl

libcurl是免费的轻量级的客户端网络库,支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet, TFTP. 支持SSL, HTTP POST, HTTP PUT, FTP上传, HTTP form上传,代理,cookies, 用户名与密码认证。

如果你开发的是客户端,libcurl是一个不错的选择。

clsocket

clsocket是一组轻量级的类,允许开发人员实现基于IP的网络程序。这个编译简单而且用起来也简单,推荐使用。

日志库

spdlog

参考链接

  1. C++数学库,by xigua1234.
  2. c++中关于M_PI,M_E的解释和使用,以及参考值,by SYITwin.
  3. GSL with CMake build support,by ampl.
  4. 在Visual Studio中使用GNU Scientific Library (GSL),by NULL_BOT.
  5. 开源免费的C/C++网络库(c/c++ sockets library) 七剑下天山,by 工程师WWW.
  6. 值得推荐的C/C++框架和库 (真的很强大),by tibet889.
  7. 有哪些值得推荐的c/c++开源框架与库,by 零声学院.
  8. C++ std::isnan等函数的使用,by ccf19881030.
  9. C/C++log日志库比较,by shy丶gril.