1. 转:https://www.mhftz.com/archives/42.html

      个人学习C/C++的开源代码:

      0.STL

      1.osmium

      2.leveldb

      3.glog

      4.redis

      个人使用的开源代码:

      1.rapidjson

      2.protobuf

      每个人每个时期都有所需要的lib,并且不同吧。

      个人觉得3d方面HDK(houdini 3d, houdini engine)库是和其他库完全不同的:
      HDK和其他库的区别就好像,其他库是初等数学,HDK是微积分。
      这个库牛逼到:
      比如你做一个舰船模型,只要修改一个参数(不是两个参数),这个舰船就能自动,智能的从渔船变成军舰,乃至变成宇宙飞船。每个模型都有无数级别,无数种变换。

      并且HDK在qt上可以和qt的python交互,使用很方便。

    2. 陈宇飞说道:

      还是要推荐一下脸书的folly,毕竟广告还是要打的 GitHub – facebook/folly: An open-source C++ library developed and used at Facebook.
      folly就是一个杂货铺,里面很多boost没有的东西。我最常用到的就是folly::to,虽然新标准里面都有这种数字/字符串的转换了,但是老版本编译器的话还是folly::to 方便
      folly还有各种各样的数据结构,比如MPMCQueue是一个多Consumer多Producer的queue,用起来非常方便,速度也快。AtomicList,AtomicUnorderedMap,AtomicStruct都是一个在高并发的情况下需要用到的数据结构
      如果你对里面的内部构造感兴趣,我写过一个关于folly里面各种数据结构的问,你可以看看你见过哪些令你瞠目结舌的C/C++代码技巧? – 陈宇飞的回答

    3. 王煦说道:

      泛用库Boost,界面库Qt,通信库ZeroMQ,视觉库OpenCV,并发库tbb,深度学习Caffe,序列化Protobuf ,加上一些cppformat之类的小库

    4. 慧航说道:

      写几个我最经常用的吧:

      1、科学家算GSL:GNU Scientific Library

      基本上能满足用C做科学计算的要求:

      The complete range of subject areas covered by the library includes,

      Complex NumbersRoots of PolynomialsSpecial FunctionsVectors and MatricesPermutationsSortingBLAS SupportLinear AlgebraEigensystemsFast Fourier TransformsQuadratureRandom NumbersQuasi-Random SequencesRandom DistributionsStatisticsHistogramsN-TuplesMonte Carlo IntegrationSimulated AnnealingDifferential EquationsInterpolationNumerical DifferentiationChebyshev ApproximationSeries AccelerationDiscrete Hankel TransformsRoot-FindingMinimizationLeast-Squares FittingPhysical ConstantsIEEE Floating-PointDiscrete Wavelet TransformsBasis splinesRunning StatisticsSparse Matrices and Linear Algebra

      从最优化 到 排序 到 线性代数、稀疏矩阵,功能是很全的。

      当然,有条件的可以用Intel的MKL:https://software.intel.com/en-us/intel-mkl/

      2、最优化工具包,NLopt:NLopt Reference

      一般简单问题GSL的最优化包也够用了,不过如果碰到有约束之类的问题,NLopt包是个不错的选择。

      3、OpenMP、OpenMPI

      不多解释了,两种不同类型的并行计算模型。

    5. 赵科进说道:

      这就比较多了,有一些一直就很有名思想先进我也用过,比如Qt

      还有一些比较老了,说出来有些倚老卖老,比如ATL,一个用于开发COM的模板库,还有MFC,WTL

      另外还有一部分在自己的项目某些模块中使用了,一直如雷贯耳但是没太多的直接用到,比如boost,这玩意影响了C++的发展,你说它牛不牛?

      还有opencv,华夏大地多少妹子爱它爱的不得了,虽然她们自己可能未必知道那些美颜,脸部识别多少都跟这玩意有些关系。

    6. 诸葛不亮说道:

      越来越nb的STL,在尝试从Qt迁移中

      直接影响cpp发展的,除了GUI等偏业务的,其他几乎啥都干的库,boost,目前在入门中

      nb程度直追boost的folly,不过暂时没空学

      Qt,同样是万能类库,同时还是强大的GUI库

      大数字运算库GMP

      计算机视觉库OpenCV,大学时玩过,不是一般的nb

    7. 知乎用户说道:

      http客户端curl

      http服务器 crow

      gzip压缩zlib

      json序列化jsoncpp

      二进制序列化protobuf

      嵌入式数据库sqlite

      日志库glog

      参数解析库gflags

      消息队列zmq

      rpc库brpc

      tcp网络库evpp

      3d仿真osg

      图形图像opencv

      stl,boost,qt就不用说了。

      不是我说,大家老老实实做调包侠,赚钱才是王道。

      windows下开发,强烈推荐vcpkg,了却找第三方库,编译第三方库的烦恼。

    8. Chen Moore说道:

      愚以为STL已经应该算做C++的一部分了……

      自己最常用的几个:
      curl
      zlib
      sqlite
      opencv

    9. foruok说道:
      1. 应用开发框架Qt,我的最爱,我还写了两本相关的书,《Qt Quick核心编程》和《Qt on Android核心编程》。优雅的信号与槽,强大的界面类库,跨平台。
      2. CEF(Chromium Embedded Framework),使用网页做富客户端的绝佳选择,基于Chromium,可以方便嵌入到你的应用中。类似的还有 Electron 。
      3. WebRTC,非常赞的框架,做音视频通信绕不开的。
      4. TinyXml,小巧的C++ XML库,几个源文件,直接加入到项目中就可以用
      5. Protobuf,Google的,网络通信,非常赞,方便序列化和结构化,流量又小
      6. FreeImage,强大好用的图形库
      7. Libevent,轻量级的基于事件驱动的高性能的开源网络库
      8. ffmpeg,多媒体开发类库的无冕之王
    10. sunoru说道:

      说几个跟化学相关的:

      1. Open Babel,C++ 开发的,GPLv2。自由在几十种分子结构的文件格式之间转换,还带有简单的优化、绘图功能。虽然我觉得最好用的是它的 Python binding。

      2. Gromacs,当前最流行的分子动力学模拟库,高性能,针对几乎所有平台都有优化。原本是 C 语言开发的,现在在向 C++ 迁移,已经完成大半了。是最好用的吗?按照我同事的话来讲就是“首先你要有个对手才可以比好不好用呀”。这个和 OpenBabel 一样,虽然本身也是一个软件,但作为 C++ 的库链接到你自己写的程序里会相当相当好用。对了,它还是 LGPL 开源的。

      3. BALL Project,主体是 C++ 开发的,有少量 C 代码。它是一个主要为分子生物学和分子建模而生的工具库。有一个叫做 View 的扩展用来可视化结构文件很不错。提供类似功能的库其实有很多,比如 OpenMM 以及上面提到的那两个,不过我觉得 BALL 还是最全面健壮的,还支持扩展。最关键的,它也是 LGPL 协议开源的。

    11. Jaco说道:

      RapidJSON: 首页

      这个json处理工具性能优良。这个是已经在工作中使用过的。

      在推荐一个工作中没有使用,但是非常不错的开源项目,值得你学习: Seastar

    12. laike9m说道:
    13. 知乎用户说道:

      来几个不常见但是很变态的库吧:

      bundle: 把几乎所有常见的压缩库封装成了一个库, 接口完全统一, 想用哪个用哪个.

      就一个h和一个巨TM大的cpp文件,巨好使巨方便.

      r-lyeh-archived/bundle

      Celero: 简单清晰的benchmark库, 特点就是简单易用没有废话.

      DigitalInBlue/Celero

      getopt: 解析命令行输入参数的库, 好使! 没废话! 就俩文件.

      r-lyeh-archived/getopt

      stb_image: 常见图片格式加载库, 就一个巨大无比的头文件

      stb_truetype: 常见字体加载库, 就一个巨大无比的头文件, 觉得freetype大的可以用它.

      都在这: nothings/stb

      better-enums: 编译期实现的enum扩展功能,包括enum和字符串互转等等. 感觉比较重量级, 我一般是不用的, 但有时候没它还真是别扭, 尤其是需要把一个enum序列化的时候.

      aantron/better-enums

      Catch2: 著名的单元测试框架, 那么它和boost或者google的单元测试框架有什么不同呢?

      就在于它首先是header only的, 其次是没有废话,直击要害! 你要测试对吧? 给你!

      catchorg/Catch2

      uchardet: 实现猜字符串编码的功能, 例如输入一个不知道编码的文本文件, 它可以帮你”猜” 这个文件的编码是什么. 和python里的uchardet功能基本一样.

      BYVoid/uchardet

      win-iconv: iconv库是一个字符集编码转换的库, 在linux和mac下均是原生字符转换库. 但windows上并不是自带的. 那么就会导致在windows上编译iconv有点浪费. 因为windows显然已经自带字符集转换的功能了. 那么这个库的作用就是用windows api来实现和iconv库一模一样的接口. 这样编译出来比较小. 从此字符转换不是梦.

      win-iconv/win-iconv

      freetype-gl: open gl 上实现的freetype. 不过我个人没用过… 不知道好不好用. 但当你需要在opengl上下文中渲染字体的时候, 你可能用得着它.

      rougier/freetype-gl

      nanovg: 基于openGL/DX/metal的2d绘图库. 绘图效率高, 接口清晰. 主版本是基于openGL的, 但有DX,metal等分支. 前端接口还有python和lua的. 个人感觉不错.

      memononen/nanovg

      imgui: 大名鼎鼎的imgui, 你可能会问在有一堆GUI框架的情况下为什么我们需要imgui? 因为它是immediate mode的. 个人认为是几个immediate mode的GUI框架里最好的. 详细见它的页面介绍.

      r-lyeh-archived/imgui

      spdlog: logger库, 重点推荐! 为什么呢? 因为好使! 没有废话. 而且是header only的.

      gabime/spdlog

      ffts: 很好使的FFT库, 和fftw的不同在于用着是真方便! 而且难能可贵在于速度居然真不比fftw慢.

      linkotec/ffts

      fmt: formatting库, 又小又好使! 太好使了!

      fmtlib/fmt

      最后是恐怖的Amalgamate.

      vinniefalco/Amalgamate

      它是干嘛的呢? 它是专门用来把其他库”封装成”一个cpp和一个h文件的工具. 比如说freetype里有几十个h几十个cpp, 用起来觉得麻烦的话, 就写个配置文件然后用它跑一下, 立即就可以把freetype的这些cpp和h文件变成仅仅两个巨大无比的cpp和h文件. 再重复一遍, 巨大无比!! 这便是传说中的unity build…. 目前github上已经有很多的人开始用它来封装一些常见的库了.

      那么这么做好不好呢, 我也不知道. 前文中提到的bundle库就是用它把N多库合并到一个cpp里的.

      这个工具的作者vinniefalco还写了beast库, 目前已收录进了boost里.

      freetypeAmalgam: 利用上面的工具把整个freetype封装成了一个h和一个cpp, 想用freetype又懒得编译和配置的人就把这两个文件往项目里一拖, 就可以用freetype了.

      vinniefalco/FreeTypeAmalgam

    14. 张友东说道:

      做存储, 数据库系统方面的开发,主要用到

      * grpc/libevent/libev/libasio 实现高性能网络服务器
      * protobuf 数据结构序列化/反序列化,方便数据交换
      * LevelDB/RocksDB 嵌入式KV数据库
      * snappy/zlib/lz4 数据压缩,解压缩
      * jemalloc/tcmalloc 高效内存分配器,尤其多线程场景
      * jerasure Reed Solomon编解码,给存储系统实现erasure code
      * murmurhash… 实现hash摘要
      * crc32 数据存储或传输时的数据校验
      * cJSON 解析json格式配置文件
      * libBSON JSON序列化/反序列化,MongoDB使用这种格式存储数据
      * boost 功能丰富的C++基础库,轻度使用,C++11/14后基本不用了。
      * libRedis redis是一个数据库服务,并不是单独的库,但其代码精简,质量非常高,里面很多代码都可以拿出来直接复用,比如网络,各种数据结构的实现。

    15. Irons Du说道:

      我推荐一个貌似没被提及的:https://github.com/Taywee/args

      用于解析命令行参数,个人觉得比gflags高级多了。

    16. Xi Yang说道:

      我来布道GNU的那一套吧。

      Glib:C基础库,提供了容器、原子操作、线程、抛异常、字符串等基础设施。

      GObject:在C里面实现比C++更彻底的对象系统。Gtk3的GObject有很彻底的introspection能力,比如运行时自动生成脚本语言绑定。代价是写类型需要一堆恶心的宏。

      Cairo:2D绘图库,功能全面,支持多种绘图表面,包括内存位图、矢量文件(PDF、PostScript、SVG)、窗口表面。主要问题是在Windows上的屏幕绘图是用GDI实现的,神特么慢。

      Gtk:GUI开发架构。它几乎所有的玩意都可以绑事件,事件化的程度比Qt Widgets还要彻底。Gtk Builder使用布局描述XML在运行时构建GUI,并且自动绑定回调函数(代价是必须暴露回调函数到符号表)。基于GObject既是它的好处(彻底的事件化),也是它的缺点(写个新Gtk类型需要一堆恶心的宏)。

    17. zpan说道:

      GLib

      FFmpeg

      fftw

      boost

      Catch2

      libuv

      http_parser

      OpenSSL

      libsodium

      MsgPack

      cblas

      SQLite

      Redis

      cJSON

    18. 知乎用户说道:

      说几个不是库的

      OpenAFS,著名的分布式文件系统。

      Memcached,没人不知道吧

      C++ B-tree

      https://github.com/goossaert/hashmap hashmap

      http://thrust.github.io 这是个并行库

      opencl不用我说了吧。

      openmp也不用说吧

      leveldb rocksdb

      memtrack 一看名字就知道干啥吧。

      cppcheck静态检查的

      addressantizer valgrind 查内存泄漏的

      ace是垃圾,我不用它。

      v8 js引擎

      crow cpp版的flask,web框架

      peloton数据库,Self-Driving DB

转: 工作中用的C++库的更多相关文章

  1. Liu Junqiao:工作中用到的命令以及问题汇总

    工作中用到的命令以及问题汇总 2019-11-29 查看系统运行时间,这个问题是因为我们在阿里云上有个机器,在某一天发现这台机器上有的服务莫名奇妙的停了,然后排查时怀疑机器被重启过用如下如下命令查看了 ...

  2. 工作中用到的linux命令

    都是工作中用到的,解决问题至上,不求甚解,怕再忘了,所以记录一下,勿喷. .log |,,,,|,| 先说一下这条命令: cat:打印文件内容 grep:查找,用到的有\s匹配空白字符 sed:刚用到 ...

  3. linux下查看动态链接库依赖关系的命令 x86: ldd *.so arm: arm-linux-readelf -d *.so 实际例子: 以项目中用到的库librtsp.so分析: lijun@ubuntu:~/workspace$ arm-hisiv100nptl-linux-ld -d librtsp.so arm-hisiv100nptl-linux-ld:

    linux下查看动态链接库依赖关系的命令 x86:ldd    *.so arm:arm-linux-readelf    -d    *.so 实际例子:以项目中用到的库librtsp.so分析:l ...

  4. ESP8266开发之旅 网络篇② ESP8266 工作模式与ESP8266WiFi库

        在网络篇①中,博主主要讲解了Arduino上开发ESP8266的插件库 Arduino Core For ESP8266.但是,并没有讲到关于这个模块的工作模式,所以本篇讲着重讲解ESP826 ...

  5. 记录工作中用到的linux命令

    日常工作中会对centos进行操作,总是会有一些常用的命令记不住,特开一贴,记录那些命令,学而时习之.   RPM操作类命令:   查看RPM安装路径: 1.rpm -qa|grep Memcache ...

  6. 工作中用Git对项目进行管理

    前言 之前一直是用svn来管理代码的,今天第一次用git来管理代码,从安装.上传代码过程中遇到了很多问题,Github中建的repository之前还是https协议,最后不知道怎么又变成了git协议 ...

  7. 工作中用到和应该知道的eclipse快捷键

    Eclipse最初是由IBM公司开发的替代商业软件Visual Age for Java的下一代IDE开发环境,2001年11月贡献给开源社区,现在它由非营利软件供应商联盟Eclipse基金会(Ecl ...

  8. 最近工作中用到的Linux指定 PS Kill netstat解释

    1.ps详解点击如下链接 https://jingyan.baidu.com/article/fec4bce2479f05f2618d8b80.html 2.kill kill命令用来删除执行中的程序 ...

  9. 工作中用到的oracle字符串分割整理

    oracle部分: 定义类型(用于字符串分割): create or replace TYPE "STR_SPLIT" IS TABLE OF VARCHAR2 (4000); 字 ...

随机推荐

  1. string::size_type 页73 size_t 页90

    异同点: size_t size_type sizeof(XXX)所得到的结果的类型就是 string类类型和vector类类型定义的类型,string的size操作返回来的是string::size ...

  2. json数据返回数字,页面显示文字处理

    var obj = { 1:'你好1', 2:'你好2', 3:'你好3' } var e = obj[1]; e; //'你好1'

  3. mac MAMP安装redis扩展

    一般情况下目录大概是一样的,只是php的版本不同,所以选择好自己对应的php版本目录即可 git clone https://github.com/nicolasff/phpredis.git cd ...

  4. jstl jsp long to date

    jsp 页面中使用jstl el 将long转换为时间类型,并格式化输出 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" ...

  5. Vue学习笔记【3】——Vue指令之v-bind的三种用法

    直接使用指令v-bind 使用简化指令: 在绑定的时候,拼接绑定内容::title="btnTitle + ', 这是追加的内容'" <!DOCTYPE html> & ...

  6. 【JVM】符号引用和直接引用

    在JVM中类加载过程中,在解析阶段,Java虚拟机会把类的二级制数据中的符号引用替换为直接引用. 1.符号引用(Symbolic References): 符号引用以一组符号来描述所引用的目标,符号可 ...

  7. bzoj 3207 可持久化线段树+hash

    这道题要看出来这个做法还是比较容易说一下细节 1.因为要用hash的区间值域来建树,而hash为了不冲突要开的很大,所以值域就会比较的大,不过这道题好的一点是没有修改,所以直接离散一下就会小很多 2. ...

  8. PHP ftp_close() 函数

    定义和用法 ftp_close() 函数关闭 FTP 连接. 语法 ftp_close(ftp_connection) 参数 描述 ftp_connection 必需.规定要关闭的 FTP 连接. 实 ...

  9. Spellchecker inspection helps locate typos and misspelling in your code, comments and literals, and fix them in one click

    Pycharm设置 Pycharm总是很多的拼写检查波拉线 Spellchecker inspection helps locate typos and misspelling in your cod ...

  10. 前台处理ajax:axios

    """ 1.安装axios cnpm install axios --save 2.src/main.js配置 // 允许ajax发送请求时附带cookie axios. ...