了解C++资源库提高C++开发效率


C++ 标准模板库的核心包括以下三个组件:

组件 描述
容器(Containers) 容器是用来管理某一类对象的集合。C++ 提供了各种不同类型的容器,比如 deque、list、vector、map 等。
算法(Algorithms) 算法作用于容器。它们提供了执行各种操作的方式,包括对容器内容执行初始化、排序、搜索和转换等操作。
迭代器(iterators) 迭代器用于遍历对象集合的元素。这些集合可能是容器,也可能是容器的子集。

这三个组件都带有丰富的预定义函数,帮助我们通过简单的方式处理复杂的任务。

向量容器(一个 C++ 标准的模板)与数组十分相似,唯一不同的是,向量在需要扩展大小的时候,会自动处理它自己的存储需求:


我们只需要知道以下几个函数的意义:

  • push_back( ) 成员函数在向量的末尾插入值,如果有必要会扩展向量的大小。
  • size( ) 函数显示向量的大小。
  • begin( ) 函数返回一个指向向量开头的迭代器。
  • end( ) 函数返回一个指向向量末尾的迭代器。
// 创建一个向量存储 int
   vector<int> vec; 
 // 推入 5 个值到向量中
   for(i = 0; i < 5; i++){
      vec.push_back(i);
   }

 // 使用迭代器 iterator 访问值
   vector<int>::iterator v = vec.begin();
   while( v != vec.end()) {
      cout << "value of v = " << *v << endl;
      v++;
   }

C++ 标准库可以分为两部分:

  • 标准函数库: 这个库是由通用的、独立的、不属于任何类的函数组成的。函数库继承自 C 语言。
  • 面向对象类库: 这个库是类及其相关函数的集合

C++ 标准库包含了所有的 C 标准库,为了支持类型安全,做了一定的添加和修改


标准函数库分为以下几类:

  • 输入/输出 I/O
  • 字符串和字符处理
  • 数学
  • 时间、日期和本地化
  • 动态分配
  • 其他
  • 宽字符函数

标准的 C++ 面向对象类库定义了大量支持一些常见操作的类,比如输入/输出 I/O、字符串处理、数值处理。面向对象类库包含以下内容:

  • 标准的 C++ I/O 类
  • String 类
  • 数值类
  • STL 容器类
  • STL 算法
  • STL 函数对象
  • STL 迭代器
  • STL 分配器
  • 本地化库
  • 异常处理类
  • 杂项支持库


C++程序员学习必备!

关于JSON数据生成与解析的库

Jason

  • frozen : C/C++的Jason解析生成器
  • Jansson :进行编解码和处理Jason数据的C语言库
  • jbson :C++14中构建和迭代BSON data,和Json 文档的库
  • JeayeSON :非常健全的C++ JSON库,只包含头文件
  • JSON++ : C++ JSON 解析器
  • json-parser :用可移植的ANSI C编写的JSON解析器,占用内存非常少
  • json11 :一个迷你的C++11 JSON库
  • jute :非常简单的C++ JSON解析器
  • ibjson :C语言中的JSON解析和打印库,很容易和任何模型集成。
  • libjson :轻量级的JSON库
  • PicoJSON :C++中JSON解析序列化,只包含头文件
  • qt-json :用于JSON数据和 QVariant层次间的相互解析的简单类
  • QJson :将JSON数据映射到QVariant对象的基于Qt的库
  • RapidJSON : 用于C++的快速JSON 解析生成器,包含SAX和DOM两种风格的API
  • YAJL :C语言中快速流JSON解析库

关于C++日志的类库

日志

  • Boost.Log :设计非常模块化,并且具有扩展性
  • easyloggingpp :C++日志库,只包含单一的头文件。
  • Log4cpp :一系列C++类库,灵活添加日志到文件,系统日志,IDSA和其他地方。
  • templog :轻量级C++库,可以添加日志到你的C++应用程序中

机器学习与计算机视觉处理的算法库

机器学习

  • Caffe :快速的神经网络框架
  • CCV :以C语言为核心的现代计算机视觉库
  • mlpack :可扩展的C++机器学习库
  • OpenCV :开源计算机视觉库
  • Recommender :使用协同过滤进行产品推荐/建议的C语言库。
  • SHOGUN :Shogun 机器学习工具
  • sofia-ml :用于机器学习的快速增量算法套件

关于数学运算的库

数学

  • Armadillo :高质量的C++线性代数库,速度和易用性做到了很好的平衡。语法和MatlAB很相似
  • blaze :高性能的C++数学库,用于密集和稀疏算法。
  • ceres-solver :来自谷歌的C++库,用于建模和解决大型复杂非线性最小平方问题。
  • CGal : 高效,可靠的集合算法集合
  • cml :用于游戏和图形的免费C++数学库
  • Eigen :高级C++模板头文件库,包括线性代数,矩阵,向量操作,数值解决和其他相关的算法。
  • GMTL :数学图形模板库是一组广泛实现基本图形的工具。
  • GMP :用于个高精度计算的C/C++库,处理有符号整数,有理数和浮点数。

多媒体

  • GStreamer :构建媒体处理组件图形的库
  • LIVE555 Streaming Media :使用开放标准协议(RTP/RTCP, RTSP, SIP) 的多媒体流库
  • libVLC :libVLC (VLC SDK)媒体框架
  • QtAv :基于Qt和FFmpeg的多媒体播放框架,能够帮助你轻而易举地编写出一个播放器
  • SDL :简单直控媒体层
  • SFML :快速,简单的多媒体库

网络

  • ACE :C++面向对象网络变成工具包
  • Boost.Asio :用于网络和底层I/O编程的跨平台的C++库
  • Casablanca :C++ REST SDK
  • cpp-netlib :高级网络编程的开源库集合
  • Dyad.c :C语言的异步网络
  • libcurl :多协议文件传输库
  • Mongoose :非常轻量级的网络服务器
  • Muduo :用于Linux多线程服务器的C++非阻塞网络库
  • net_skeleton :C/C++的TCP 客户端/服务器库
  • nope.c :基于C语言的超轻型软件平台,用于可扩展的服务器端和网络应用。 对于C编程人员,可以考虑node.js
  • Onion :C语言HTTP服务器库,其设计为轻量级,易使用。
  • POCO :用于构建网络和基于互联网应用程序的C++类库,可以运行在桌面,服务器,移动和嵌入式系统。
  • RakNet :为游戏开发人员提供的跨平台的开源C++网络引擎。
  • Tuf o :用于Qt之上的C++构建的异步Web框架。
  • WebSocket++ :基于C++/Boost Aiso的websocket 客户端/服务器库
  • ZeroMQ :高速,模块化的异步通信库

物理学

动力学仿真引擎

  • Box2D :2D的游戏物理引擎。
  • Bullet :3D的游戏物理引擎。
  • Chipmunk :快速,轻量级的2D游戏物理库
  • LiquidFun :2D的游戏物理引擎
  • ODE :开放动力学引擎-开源,高性能库,模拟刚体动力学。
  • ofxBox2d :Box2D开源框架包装器。
  • Simbody :高性能C++多体动力学/物理库,模拟关节生物力学和机械系统,像车辆,机器人和人体骨骼。

机器人学

  • MOOS-IvP :一组开源C++模块,提供机器人平台的自主权,尤其是自主的海洋车辆。
  • MRPT :移动机器人编程工具包
  • PCL :点云库是一个独立的,大规模的开放项目,用于2D/3D图像和点云处理。
  • Robotics Library (RL) : 一个独立的C++库,包括机器人动力学,运动规划和控制。
  • RobWork :一组C++库的集合,用于机器人系统的仿真和控制。
  • ROS :机器人操作系统,提供了一些库和工具帮助软件开发人员创建机器人应用程序。

科学计算

  • FFTW :用一维或者多维计算DFT的C语言库。
  • GSL :GNU科学库。

脚本

  • ChaiScript :用于C++的易于使用的嵌入式脚本语言。
  • Lua :用于配置文件和基本应用程序脚本的小型快速脚本引擎。
  • luacxx :用于创建Lua绑定的C++ 11 API
  • SWIG :一个可以让你的C++代码链接到JavaScript,Perl,PHP,Python,Tcl和Ruby的包装器/接口生成器
  • V7 :嵌入式的JavaScript 引擎。
  • V8 :谷歌的快速JavaScript引擎,可以被嵌入到任何C++应用程序中。

序列化

  • Cap’n Proto :快速数据交换格式和RPC系统。
  • cereal :C++11 序列化库
  • FlatBuffers :内存高效的序列化库
  • MessagePack :C/C++的高效二进制序列化库,例如 JSON
  • protobuf :协议缓冲,谷歌的数据交换格式。
  • protobuf-c :C语言的协议缓冲实现
  • SimpleBinaryEncoding :用于低延迟应用程序的对二进制格式的应用程序信息的编码和解码。
  • Thrift :高效的跨语言IPC/RPC,用于C++,Java,Python,PHP,C#和其它多种语言中,最初由Twitter开发。

视频

  • libvpx :VP8/VP9编码解码SDK
  • FFmpeg :一个完整的,跨平台的解决方案,用于记录,转换视频和音频流。
  • libde265 :开放的h.265视频编解码器的实现。
  • OpenH264 :开源H.364 编解码器。
  • Theora :免费开源的视频压缩格式。

虚拟机

  • CarpVM :C中有趣的VM,让我们一起来看看这个。
  • MicroPython :旨在实现单片机上Python3.x的实现
  • TinyVM :用纯粹的ANSI C编写的小型,快速,轻量级的虚拟机。

Web应用框架

  • Civetweb :提供易于使用,强大的,C/C++嵌入式Web服务器,带有可选的CGI,SSL和Lua支持。
  • CppCMS :免费高性能的Web开发框架(不是 CMS).
  • Crow :一个C++微型web框架(灵感来自于Python Flask)
  • Kore :使用C语言开发的用于web应用程序的超快速和灵活的web服务器/框架。
  • libOnion :轻量级的库,帮助你使用C编程语言创建web服务器。
  • QDjango :使用C++编写的,基于Qt库的web框架,试图效仿Django API,因此得此名。
  • Wt :开发Web应用的C++库。

XML

XML就是个垃圾,xml的解析很烦人,对于计算机它也是个灾难。这种糟糕的东西完全没有存在的理由了。-Linus Torvalds

  • Expat :用C语言编写的xml解析库
  • Libxml2 :Gnome的xml C解析器和工具包
  • libxml++ :C++的xml解析器
  • PugiXML :用于C++的,支持XPath的轻量级,简单快速的XML解析器。
  • RapidXml :试图创建最快速的XML解析器,同时保持易用性,可移植性和合理的W3C兼容性。
  • TinyXML :简单小型的C++XML解析器,可以很容易地集成到其它项目中。
  • TinyXML2 :简单快速的C++CML解析器,可以很容易集成到其它项目中。
  • TinyXML++ :TinyXML的一个全新的接口,使用了C++的许多许多优势,模板,异常和更好的异常处理。
  • Xerces-C++ :用可移植的C++的子集编写的XML验证解析器。

多项混杂

一些有用的库或者工具,但是不适合上面的分类,或者还没有分类。

  • C++ Format :C++的小型,安全和快速格式化库
  • casacore :从aips++ 派生的一系列C++核心库
  • cxx-prettyprint :用于C++容器的打印库
  • DynaPDF :易于使用的PDF生成库
  • gcc-poison :帮助开发人员禁止应用程序中的不安全的C/C++函数的简单的头文件。
  • googlemock :编写和使用C++模拟类的库
  • HTTP Parser :C的http请求/响应解析器
  • libcpuid :用于x86 CPU检测盒特征提取的小型C库
  • libevil :许可证管理器
  • libusb :允许移动访问USB设备的通用USB库
  • PCRE :正则表达式C库,灵感来自于Perl中正则表达式的功能。
  • Remote Call Framework :C++的进程间通信框架。
  • Scintilla :开源的代码编辑控件
  • Serial Communication Library :C++语言编写的跨平台,串口库。
  • SDS :C的简单动态字符串库
  • SLDR :超轻的DNS解析器
  • SLRE : 超轻的正则表达式库
  • Stage :移动机器人模拟器
  • VarTypes :C++/Qt4功能丰富,面向对象的管理变量的框架。
  • ZBar :‘条形码扫描器’库,可以扫描照片,图片和视频流中的条形码,并返回结果
  • CppVerbalExpressions :易于使用的C++正则表达式
  • QtVerbalExpressions :基于C++ VerbalExpressions 库的Qt库
  • PHP-CPP :使用C++来构建PHP扩展的库
  • Better String :C的另一个字符串库,功能更丰富,但是没有缓冲溢出问题,还包含了一个C++包装器。

软件

用于创建开发环境的软件

编译器

C/C++编译器列表

  • Clang :由苹果公司开发的
  • GCC :GNU编译器集合
  • Intel C++ Compiler :由英特尔公司开发
  • LLVM :模块化和可重用编译器和工具链技术的集合
  • Microsoft Visual C++ :MSVC,由微软公司开发
  • Open WatCom :Watcom,C,C++和Fortran交叉编译器和工具
  • TCC :轻量级的C语言编译器

在线编译器

在线C/C++编译器列表

  • codepad :在线编译器/解释器,一个简单的协作工具
  • CodeTwist :一个简单的在线编译器/解释器,你可以粘贴的C,C++或者Java代码,在线执行并查看结果
  • coliru :在线编译器/shell, 支持各种C++编译器
  • Compiler Explorer :交互式编译器,可以进行汇编输出
  • CompileOnline :Linux上在线编译和执行C++程序
  • Ideone :一个在线编译器和调试工具,允许你在线编译源代码并执行,支持60多种编程语言。

调试器

C/C++调试器列表

集成开发环境(IDE)

C/C++集成开发环境列表

  • AppCode :构建与JetBrains’ IntelliJ IDEA 平台上的用于Objective-C,C,C++,Java和Java开发的集成开发环境
  • CLion :来自JetBrains的跨平台的C/C++的集成开发环境
  • Code::Blocks :免费C,C++和Fortran的集成开发环境
  • CodeLite :另一个跨平台的免费的C/C++集成开发环境
  • Dev-C++ :可移植的C/C++/C++11集成开发环境
  • Eclipse CDT :基于Eclipse平台的功能齐全的C和C++集成开发环境
  • Geany :轻量级的快速,跨平台的集成开发环境。
  • IBM VisualAge :来自IBM的家庭计算机集成开发环境。
  • Irony-mode :由libclang驱动的用于Emacs的C/C++微模式
  • KDevelop :免费开源集成开发环境
  • Microsoft Visual Studio :来自微软的集成开发环境
  • NetBeans :主要用于Java开发的的集成开发环境,也支持其他语言,尤其是PHP,C/C++和HTML5。
  • Qt Creator :跨平台的C++,Javascript和QML集成开发环境,也是Qt SDK的一部分。
  • rtags :C/C++的客户端服务器索引,用于 跟基于clang的emacs的集成
  • Xcode :由苹果公司开发
  • YouCompleteMe :一个用于Vim的根据你敲的代码快速模糊搜索并进行代码补全的引擎。

参考资料:http://www.runoob.com/cplusplus/cpp-useful-resources.html

参考资料:http://www.tuicool.com/articles/MBr6fur

来源网站:http://www.runoob.com

来源网站:http://www.tuicool.com

1,01.zipCalling Stored Procedures调用存储过程(8KB)2,02.zipCreate Access data source name dynamically动态创建Access的数据源名(5KB)3,03.zipUsing DAO to read data sources other than MS Access使用DAO读MS Access以外的数据源(6KB)4,04.zipHow to use RecordSets without using the AppWizard at the creation of your project不用AppWizard如何使用RecordSets(11KB)5,05.zipDetermine if DAO Jet engine version 3.5 is installed检测DAO Jet引擎3.5版是否安装(5KB)6,06.zipClasses for direct SQL calls with ODBC在direct SQL类中调用ODBC(5KB)7,07.zipUsefull addons to CDaoTableDef关于CDaoTableDef的话题(4KB)8,08.zipThe Generic Recordset普通的数据集(Recordset)(5KB)09,09.zipPrint Mailing Labels打印邮件标签(8KB)10,10.zipRFX_Date alternative关于RFX_Date(4KB)11,11.zipRFX_Date using COleDateTime使用COleDateTime(6KB)12,12.zipSample Database Program Using Dialog Interface基于对话框的数据库编程(11KB)13,13.zipStoring "Paint Brush" images in a Access DB在Access DB中存储画笔图象(5KB)14,14.zipA class to call stored procedures that do not return records一个调用存储过程的类(6KB)15,15.zipTips: ODBC & Access databaseODBC和Access数据库的使用技巧(5KB)16,16.zipUsing DBGrid in unbound mode在unbound模式下使用DBGrid(6KB)17,ADORsWizard.zipADO Data Bound Class Wizard(39KB)18,ISQLADO.zipA tool that allows you to query OLE DB sources(612KB)19,oledb-1.zipADO seems to be the ideal way to expose tabular data from your own COM objects and the ATL OLE DB Provider templates can help! (41KB)20,oledb-2-1.zipThe ATL OLE DB Provider templates appear to rely on the fact that your data is kept in a simple array, but that's not really the case at all! (42KB)21,oledb-3.zipAdding bookmark functionality is relatively easy and it enables our ADO recordset to be used with a greater number of data bound controls. (52KB)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值