paip.c++ 常用类库attilax总结

paip.c++ 常用类库attilax总结

 

VCL: WINDOWS平台最好的类库了..推荐使用..开发效率最高. 1

QT..推荐使用..开发效率比较高. 1

GTK(GTKMM)...开发效率没有QT高。 1

STL库:C++ 标准模板库STL 1

Boost,Boost 2

WxWidgetS/WxWindows 。不推荐 2

MFC:  已经落后n,不推荐使用. 2

WTL:  功能较少,有限的..不推荐使用...除非开发COM控件 2

ATL:不推荐使用,除非编写COM组件 3

五、网络通信库ACE/StreamModule/SimpleSocket 3

密码/hash库  Crypto++ 4

反射机制网络,实用工具,XML,对Java集成等等ACDK - Artefaktur Component Development Kit 4

六、XML处理库Xerces/Xalan/libxml++ 4

////////////////Boost扩展介绍 5

//////////////stl 扩展介绍 5

参考: 7

 

作者Attilax ,  EMAIL:[email protected] 
来源:attilax的专栏
地址:http://blog.csdn.net/attilax

VCL: WINDOWS平台最好的类库了..推荐使用..开发效率最高.

 

QT..推荐使用..开发效率比较高.

GTK(GTKMM)...开发效率没有QT高。

GTK是一个大名鼎鼎的C的开源GUI库。在Linux世界中有Gnome这样的杀手应用。gtkmm 是 GTK+ 的 C++ 语言封装。

 

STL库:C++ 标准模板库STL  

STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器)

 

 

Boost,Boost

是一个经过千锤百炼、可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一。 Boost库为我们带来了最新、最酷、最实用的技术,是不折不扣的“准”标准库。

Boost;

 

 

WxWidgetS/WxWindows 。不推荐

wxWidget-------------开源、跨平台的C++ GUI库,可以看做一个MFC类库的复制品(其内部机制与MFC同出一辙)跨平台的GUI库。因为其类层次极像MFC,所以有文章介绍从MFCWxWindows的代码移植以实现跨平台的功能。通过多年的开发也是一个日趋完善的GUI库,支持同样不弱于前面两个库。并且是完全开放源代码的。新近的C++ Builder XGUI设计器就是基于这个库的。

 WxWindows-----功能强大的跨平台GUI库  ,它的功能和结构都类似 MFC,故原则上
      可以通过WxWindows把现有MFC程序移植到非Win平台下

 

 

MFC:  已经落后n,不推荐使用.

WTL:  功能较少,有限的..不推荐使用...除非开发COM控件

基于ATL的一个库。因为使用了大量ATL的轻量级手法,模板等技术,在代码尺寸,以及速度优化方面做得非常到位。主要面向的使用群体是开发COM轻量级供网络下载的可视化控件的开发者。

 

ATL:不推荐使用,除非编写COM组件

ATL(Active Template Library)是一组小巧、高效、灵活的类,这些类为创建可互操作的COM组件提供了基本的设施。

 

 

五、网络通信库ACE/StreamModule/SimpleSocket

 

ACE

C++库的代表,超重量级的网络通信开发框架。ACE自适配通信环境(Adaptive Communication Environment)是可以自由使用、开放源代码的面向对象框架,在其中实现了许多用于并发通信软件的核心模式。ACE提供了一组丰富的可复用C++ 包装外观(Wrapper Facade)和框架组件,可跨越多种平台完成通用的通信软件任务,其中包括:事件多路分离和事件处理器分派、信号处理、服务初始化、进程间通信、共享内存管理、消息路由、分布式服务动态(重)配置、并发执行和同步,等等。

StreamModule

设计用于简化编写分布式程序的库。尝试着使得编写处理异步行为的程序更容易,而不是用同步的外壳包起异步的本质。

SimpleSocket

这个类库让编写基于socket的客户/服务器程序更加容易。

A Stream Socket API for C++

又一个对Socket的封装库。

 

密码/hash库  Crypto++

提供处理密码,消息验证,单向hash,公匙加密系统等功能的免费库。

 

反射机制网络,实用工具,XML,对Java集成等等ACDK - Artefaktur Component Development Kit

这是一个平台无关的C++组件框架,类似于Java或者.NET中的框架(反射机制,线程,Unicode,废料收集,I/O,网络,实用工具,XML,等等),以及对Java, Perl, Python, TCL, Lisp, COM 和 CORBA的集成。

 

 

六、XML处理库Xerces/Xalan/libxml++

 

Xerces

Xerces-C++ 是一个非常健壮的XML解析器,它提供了验证,以及SAX和DOM API。XML验证在文档类型定义(Document Type Definition,DTD)方面有很好的支持,并且在2001年12月增加了支持W3C XML Schema 的基本完整的开放标准。

XMLBooster

这个库通过产生特制的parser的办法极大的提高了XML解析的速度,并且能够产生相应的GUI程序来修改这个parser。在DOM和SAX两大主XML解析办法之外提供了另外一个可行的解决方案。

Pull Parser

这个库采用pull方法的parser。在每个SAX的parser底层都有一个pull的parser,这个xpp把这层暴露出来直接给大家使用。在要充分考虑速度的时候值得尝试。

Xalan

Xalan是一个用于把XML文档转换为HTML,纯文本或者其他XML类型文档的XSLT处理器。

CMarkup

这是一种使用EDOM的XML解析器。在很多思路上面非常灵活实用。值得大家在DOM和SAX之外寻求一点灵感。

libxml++

libxml++是对着名的libxml XML解析器的C++封装版本

 

 

 

////////////////Boost扩展介绍

Boost不是C++的标准库。Boost是提供了一些标准库中所没有的库,比如网络、多线程和正则表达式,功能上更加丰富。

boost主要包含一下几个大类:字符串及文本处理、容器、迭代子(Iterator)、算法、函数对象和高阶编程、泛型编程、模板元编程、预处理元编程、并发编程、数学相关、纠错和测试、数据结构、输入/输出、跨语言支持、内存相关、语法分析、杂项。 有一些库是跨类别包含的,就是既属于这个类别又属于那个类别。

Boost中比较有名气的有这么几个库: 

2.1 Regex  正则表达式库 

2.7 Thread   可移植的C++多线程库 

2.8 Python   C++类和函数映射到Python之中 

2.9 Pool    内存池管理 

2.10 smart_ptr   5个智能指针,学习智能指针必读,一份不错的参考是来自CUJ的文章

 

//////////////stl 扩展介绍

C++标准中,STL被组织为下面的13个头文件:<algorithm><deque><functional><iterator><vector><list><map><memory><numeric><queue><set><stack><utility>。 

 

--------算法

算法部分主要由头文件<algorithm><numeric><functional>组成。

 

<algorithm>是所有STL头文件中最大的一个(尽管它很好理解),它是由一大堆模版函数组成的,可以认为每个函数在很大程度上都是独立的,其中常用到的功能范围涉及到比较、交换、查找、遍历操作、复制、修改、移除、反转、排序、合并等等。

 

 

 

<numeric>体积很小,只包括几个在序列上面进行简单数学运算的模板函数,包括加法和乘法在序列上的一些操作。

 

 

 

<functional>中则定义了一些模板类,用以声明函数对象。

 

 

-------容器

容器部分主要由头文件<vector>,<list>,<deque>,<set>,<map>,<stack><queue>组成。对于常用的一些容器和容器适配器(可以看作由其它容器实现的容器),可以通过下表总结一下它们和相应头文件的对应关系。

 

 

 

向量(vector) 连续存储的元素<vector>

 

列表(list)       由节点组成的双向链表,每个结点包含着一个元素<list>

 

双队列(deque) 连续存储的指向不同元素的指针所组成的数组<deque>

 

集合(set) 由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种作用于元素对的谓词排列,没有两个不同的元素能够拥有相同的次序 <set>

 

多重集合(multiset) 允许存在两个次序相等的元素的集合 <set>

 

(stack) 后进先出的值的排列 <stack>

 

队列(queue) 先进先出的执的排列 <queue>

 

优先队列(priority_queue) 元素的次序是由作用于所存储的值对上的某种谓词决定的的一种队列 <queue>

 

映射(map) {键,值}对组成的集合,以某种作用于键对上的谓词排列 <map>

 

多重映射(multimap) 允许键对有相等的次序的映射 <map>

 

---迭代器

概括来说,迭代器在STL中用来将算法和容器联系起来,起着一种黏和剂的作用。几乎STL提供的所有算法都是通过迭代器存取元素序列进行工作的,每一个容器都定义了其本身所专有的迭代器,用以存取容器中的元素。

 

 

 

迭代器部分主要由头文件<utility>,<iterator><memory>组成。

 

<utility>是一个很小的头文件,它包括了贯穿使用在STL中的几个模板的声明,

 

<iterator>中提供了迭代器使用的许多方法,而对于<memory>的描述则十分的困难,它以不同寻常的方式为容器中的元素分配存储空间,同时也为某些算法执行期间产生的临时对象提供机制,<memory>中的主要部分是模板类allocator,它负责产生所有容器中的默认分配器。

 

 

 

参考:

C++ STL标准入门汇总 施杨 博客园.htm

C++Boost库简介 - IT168 操作系统专区.htm

如何学好C++,用好类库很重要(1) - 51CTO.COM.htm

 

 

 

 

你可能感兴趣的:(C++)