Comparison and learning experience of famous C + + program Library

Source: Internet
Author: User
Tags building windows gtk xml parser xslt processor

Content directory:
1, C + + each big well-known library introduction--c++ standard library
2. Introduction of the famous library of C + +--quasi-standard library boost
3, C + + each big well-known library introduction--gui
4. Introduction of the famous library of C + +--network communication
5, C + + each big well-known library introduction--xml
6. Introduction of the famous library of C + +--Scientific calculation
7. Introduction of the famous library of C + +--game development
8. Introduction of the famous library of C + +-thread
9. Introduction of the famous library of C + +-serialization
10, C + + each big famous library introduction--string
11, C + + each big well-known library introduction--Comprehensive
12. Introduction of the famous libraries of C + +--Other libraries


In C + +, the position of the library is very high. Mr. Bjarne Stroustrup, the father of C + +, has repeatedly expressed the view that designing a library to augment functionality is better than designing more grammatical words. In reality, the Library of C + + has a wide variety of problems, and the solution is extremely extensive, from lightweight to heavyweight. A lot of people are eye-opening, or looking at the idea of a masterpiece of thought. Because the number of libraries is very large, and is limited to the author level, many of them do not understand. Therefore, some of the libraries mentioned in this paper are relatively well-known large libraries.


1, C + + each big well-known library introduction--c++ standard library

The basic facilities of C + + programs are available in the standard library. Although the C + + standard library with the C + + standard has been tossing for many years, until the standard of formal stereotypes, but in the implementation of the standard library is very gratifying to see a variety of implementations, and has been proven to have industrial-grade strength of the masterpiece.

1.1. Dinkumware C + + Library

Reference site: http://www.dinkumware.com/

High quality standard library written by P.J Plauger. P.J. Dr. Plauger is Dr. Dobb ' s Program Design Excellence Award winner. Its library has been used by Microsoft for a long time, and recently Borland has also achieved its OEM license, which uses Dinkumware libraries in its C + + products.

1.2. Roguewave standard C + + Library

Reference site: http://www.roguewave.com/

This library was used in earlier versions of Borland C + + Builder and was later replaced by other libraries. I do not recommend the use of.

1.3. SGI STL

Reference site: http://www.roguewave.com/

SGI's C + + Standard Template Library.

1.4, STLport

Reference site: http://www.stlport.org/

A cross-platform portable version of the SGI STL library.



2. Introduction of the famous library of C + +--quasi-standard library boost

The boost library is a thoroughly tempered, portable, source-code C + + library that is backed up as a standard library and is one of the engines of the C + + standardization process. The boost library was initiated by members of the C + + Standards Committee Library Working Group and has a significant impact in the C + + community, with nearly 2000 members. The Boost library brings us the latest, coolest and most practical technology, and is a true "quasi" standard library.

There are a few more famous libraries in boost:

2.1 Regex Regular Expression Library

2.2 Spirit LL Parser framework, expressed directly in C + + code EBNF

2.3 Graph graph components and algorithms

2.4 Lambda defines short, anonymous function objects where it is called, a useful functional function

2.5 concept check checks for concept in generic programming

Meta-programming framework for 2.6 MPL templates

2.7 Thread Portable C + + multi-line libraries

2.8 Python maps C + + classes and functions into Python

2.9 Pool memory Management

2.10 smart_ptr 5 Smart pointers, learn the smart pointer must read, a good reference is from the Cuj article:

Smart pointers in Boost, oh, this article can be found, Cuj is to provide online browsing. Chinese version of the author in the "Dr.dobb's journal Software Research and Development magazine" in the 7th edition of the translation.

Boost overall is a high-value, high-quality library. And because of its emphasis on cross-platform, the emphasis on standard C + + is to write platform-Independent, modern C + + developers must have tools. But there are a lot of things that are experimental in boost, and they need to be cautious in practical development. And many of the library functions in boost is an extension of the language function, the structure of the use of sophisticated techniques, do not rush to spend time to study. The other side of boost, such as graph, is an industrial-strength, well-structured, high-quality code that is worth reading, and can be used with confidence in the product code.

Reference site: http://www.boost.org


3, C + + each big well-known library introduction--gui

In many C + + libraries, the GUI part of the library is relatively prosperous, but also more compelling. In the actual development, the choice of GUI library is also very important thing, below we summarize the optional GUI library, the respective characteristics and the support of related tools.

3.1. MFC

The Microsoft Foundation Class Library The people who have studied VC + + should know this library. Although technically speaking, MFC is not very beautiful, but it is built on the Windows API, can make the work of the programmer easier, more efficient programming, reduce a lot of the code that must be written when building Windows programs, but also provides all the advantages of general C + + programming, such as inheritance and encapsulation. Programs written by MFC are portable on every version of the Windows operating system, for example, code written under Windows 3.1 can be easily ported to Windows NT or Windows 95. But there has been a growing trend in recent developments and official support.

3.2. QT

Reference website: http://www.trolltech.com

QT is a multi-platform C + + graphical user interface application framework for Trolltech Corporation. It gives application developers the functionality they need to build an art-level graphical user interface. QT is fully object-oriented and easy to scale, and allows for true component programming. Since the early 1996, QT has entered the business world, and it has become the foundation of thousands of successful applications worldwide. Qt is also the foundation of the popular Linux desktop environment KDE, and it also supports many platforms such as Windows, Macintosh, unix/x11 and so on. [Wangxinus Note: QT is now a product of Nokia, the original project homepage has been invalidated, the current http://qt.nokia.com.2009 release of the Qt4.5 version began to use the LGPL protocol, Nokia hopes to attract more developers to use the QT library]

3.3, Wxwindows

Reference website: http://www.wxwindows.org

A cross-platform GUI library. Because its class hierarchy is very similar to MFC, an article introduces code porting from MFC to wxwindows to achieve cross-platform functionality. Through years of development is also an increasingly sophisticated GUI library, support is also not weaker than the previous two libraries. And it's completely open source code. The GUI designer for the recent C + + Builder X is based on this library. [Wangxinus Note: Under the pressure of Microsoft, has been renamed by Wxwindows to Wxwidgets]

3.4. Fox

Reference website: http://www.fox-toolkit.org/

Open source GUI library. The author from his own experience in the development of an ideal GUI library should be what it feels like to start, thus began the development of this library. If you are interested, you can try it.

3.5, WTL

A library that is based on ATL. Because of the use of a lot of ATL's lightweight approach, templates and other technologies, in terms of code size, and speed optimization is done in place. The main target audience is the developer of a visual control that develops COM's lightweight web-based downloads.

3.6. GTK

Reference website: http://gtkmm.sourceforge.net/

GTK is a famous open source GUI library for C. In the Linux world, there are killer apps like Gnome. And Qt is the C + + package version of this library. [Wangxinus Note: "Qt is the C + + package version of this library" is wrong. Qt earlier than GTK, the initial QT due to the protocol caused by the Community dissatisfaction, in addition to the development of a C-based GTK library, later extended version is GTK +. GTK + 's GNOME and QT KDE are the two main camps for Linux desktops, which have been hard to fire. The spirit of both sides and the open source community has now been reconciled. ]


4. Introduction of the famous library of C + +--network communication

4.1. ACE

Reference website: http://www.cs.wustl.edu/~schmidt/ACE.html

The representative of C + + library, the ultra-heavyweight network communication development framework. The ACE Adaptive Communication Environment (Adaptive communication environment) is a free-to-use, open-source object-oriented framework that implements many of the core patterns used in concurrent communication software. ACE provides a rich set of reusable C + + wrapper skins (Wrapper facade) and framework components to accomplish common communication software tasks across multiple platforms, including: Event multiplexing and event handler dispatch, signal processing, service initialization, interprocess communication, shared memory management, message routing, Distributed service dynamic (Heavy) configuration, concurrent execution and synchronization, and so on.

4.2, Streammodule

Reference website: http://www.omnifarious.org/StrMod

Designed to simplify the library of writing distributed programs. Trying to make it easier to write a program that handles asynchronous behavior rather than using a synchronous shell to wrap the nature of asynchrony.

4.3, Simplesocket

Reference website: http://home.hetnet.nl/~lcbokkers/simsock.htm

This class library makes it easier to write socket-based client/server programs.

4.4, A Stream Socket API for C + +

Reference website: http://www.pcs.cnu.edu/~dgame/sockets/socketsC++/sockets.html

Another package library for the socket.


5, C + + each big well-known library introduction--xml

5.1, Xerces

Reference site: http://xml.apache.org/xerces-c/

Xerces-c++ is a very robust XML parser that provides validation, As well as sax and Dom APIs. XML validation is well supported in document type definitions (DOC type DEFINITION,DTD), and in December 2001 added a basic and complete open standard to support the XmlSchema.

5.2, Xmlbooster

Reference Web site: http://www.xmlbooster.com/

This library greatly improves the speed of XML parsing by producing a specially crafted parser method. and can produce the corresponding GUI program to modify this parser. Another feasible solution is provided in addition to the two main mainstream XML parsing methods of Dom and sax.

5.3, pull Parser

Reference site: http://www.extreme.indiana.edu/xgws/xsoap/xpp

This library uses the Parser of the Pull method. There is a pull parser at the bottom of every SAX parser, and this xpp exposes this layer directly to everyone's use. It's worth trying to take full account of the speed.

5.4, Xalan

Reference site: http://xml.apache.org/xalan-c/

Xalan is a used to convert an XML document to HTML, An XSLT processor for plain text or other XML-type documents.

5.5, CMarkup

Reference site: http://www.firstobject.com/xml.htm

This is an XML parser that uses Edom. Very flexible and practical in many ways. It's worth a little inspiration outside of Dom and sax.

5.6, libxml++

http://libxmlplusplus.sourceforge.net/

libxml++ is a C + + encapsulated version of the famous Libxml XML parser.

5.7. TinyXML [Wangxinus Note: A very small XML parsing library, Dom-based. ]


6. Introduction of the famous library of C + +--Scientific calculation

6.1, blitz++

Reference website: Http://www.oonumerics.org/blitz

blitz++ is an efficient library of numerical computing functions designed to create a numerical environment that is as convenient as C + + and faster than FORTRAN. Usually, the numerical program written in C + + is about 20% slower than Fortran, so blitz++ is going to get rid of this shortcoming. The method is to use C + + template technology, program execution can even faster than FORTRAN.

blitz++ is still in development and is not available for common linear algebra methods such as common svd,ffts,qmres, but users can easily build using the functions provided by blitz++.

6.2, Pooma

Reference website: http://www.codesourcery.com/pooma/pooma

Pooma is a free, high-performance C + + library for processing parallel scientific computations. Pooma's object-oriented design facilitates rapid program development, optimizes parallel machines for maximum efficiency and facilitates use in industrial and research environments.

6.3. MTL

Reference website: HTTP://WWW.OSL.IU.EDU/RESEARCH/MTL

The Matrix Template Library (MTL) is a high-performance generic component library that provides a large number of linear algebra functions for various format matrices. In some applications where high-performance compilers are used, such as Intel's compilers, the resulting assembly code shows almost no difference in performance from handwriting.

6.4, Cgal

Reference website: www.cgal.org

The purpose of the computational Geometry algorithms library is to make most of the important solutions and methods in computational geometry available to industrial and academic users in the form of C + + libraries.


7. Introduction of the famous library of C + +--game development

7.1. Audio/video 3D C + + programming Library

Reference website: http://www.galacticasoftware.com/products/av/

Av3d is a cross-platform, high-performance C + + library. The main features are 3D graphics, sound support (SB, and s3m), control interface (keyboard, mouse and Remote sensing), XMS.

7.2, KlayGE

Reference website: http://home.g365.net/enginedev/

Domestic game development Masters themselves in C + + development of the game engine. Klayge is an open source, cross-platform game engine that uses Python as the scripting language. Klayge is issued under the LGPL agreement. Thank Mr. Min for his contribution to the development of Chinese games.

[Wangxinus Note: This library people know very little, Baidu Encyclopedia of the Klayge entry or I created. A person to develop a game engine library, is to make the author ashamed, the author expressed admiration! ]

7.3, OGRE

Reference website: http://www.ogre3d.org

The OGRE (object-oriented graphics rendering engine) is developed in C + + using a flexible object-oriented 3D engine. It is designed to make it easier and more straightforward for developers to develop applications or games based on 3D hardware devices. The class library in the engine abstracts the full use details of the more underlying system libraries (such as Direct3D and OpenGL) and provides interfaces and other classes based on real-world objects.


8. Introduction of the famous library of C + +-thread

8.1. C + + Threads

Reference website: http://threads.sourceforge.net/

The goal of this library is to provide programmers with easy-to-use classes that are inherited to provide a large number of threading features that are difficult to see in a Linux environment.

8.2, Zthreads

Reference website: http://zthread.sourceforge.net/

An advanced object-oriented, cross-platform C + + thread and synchronization library.


9. Introduction of the famous library of C + +-serialization

9.1, s11n

Reference website: http://s11n.net/

An STL-based C + + library for serializing Pod,stl containers and user-defined types.

9.2. Simple XML Persistence Library

Reference website: http://sxp.sourceforge.net/

This is a lightweight C + + library that serializes objects into XML.


10, C + + each big famous library introduction--string

10.1. C + + Str Library

Reference website: http://www.utilitycode.com/str/

Libraries that manipulate strings and characters, support windows and multiple platforms that support GCC. Provides highly optimized code and supports multithreaded environments and Unicode, along with support for regular expressions.

10.2. Common Text Transformation Library

Reference website: http://cttl.sourceforge.net/

This is a library that parses and modifies STL strings. The CTTL substring class can be used to compare, insert, replace, and parse with EBNF syntax.

10.3, GRETA

Reference website: http://research.microsoft.com/projects/greta/

This is a library of processing regular expressions developed by researchers at Microsoft Research. Very good performance in small match situations.


11, C + + each big well-known library introduction--Comprehensive

11.1, p::classes

Reference site: http://pclasses.com/

A highly portable C + + application framework. Currently concerned with the type and thread safety of the signal/slot mechanism, the I/O system includes a plug-in-based network protocol transparent I/O architecture, a plugin-based application message log framework, access to SQL database classes, and so on.

11.2, Acdk-artefaktur Component development Kit

Reference site: http://acdk.sourceforge.net/

This is a platform-independent C + + The component framework, similar to the framework in Java or. NET (reflection mechanism, threading, Unicode, scrap collection, I/O, network, utilities, XML, and so on), as well as integration into Java, Perl, Python, TCL, Lisp, COM and CORBA.

11.3, dlib C + + library

Reference site: http://www.cis.ohio-state.edu/~kingd/dlib/

A synthesis of various classes. Large integers, sockets, threads, GUIs, container classes, and directory-browsing APIs, and so on.

11.4, Chilkat C + + Libraries

Reference site: http://www.chilkatsoft.com/cpp_libraries.asp

This is to provide Zip,e-mail, Coding, S/mime,xml and other aspects of the library.

11.5, C + + portable Types Library (PTypes)

Reference site: http://www.melikyan.com/ptypes/

This is a relatively simple alternative to STL, and portable multi-threaded and network libraries.

11.6, LFC

Reference site: http://lfc.sourceforge.net/

Oh, this is another C + + library trying to provide everything


12. Introduction of the famous libraries of C + +--Other libraries

12.1, Loki

Reference website: http://www.moderncppdesign.com/

Oh, you might complain that I should have introduced it with boost, an experimental library. The author of the C + + template in Loki to the extreme. And try to provide things like design patterns that are thought-level through libraries. It also provides a more practical function such as smart pointers.

12.2. ATL

The ATL (Active Template Library) is a small, efficient, flexible set of classes that provide the basic facilities for creating interoperable COM components.

12.3. fc++: The functional C + + Library

This library provides some of the features that are available in functional languages. belongs to the use of libraries to expand the language of a masterpiece. If you want to find another point of fun outside of OOP, take a look at the world of functional programming. Master Peter Norvig in the article "Teach yourself Programming in Ten years", the functional language is listed as one of the 6 programming languages that should be learned at least.

12.4, fact!

Reference website: http://www.kfa-juelich.de/zam/FACT/start/index.html

Another library to implement functional language features

12.5, crypto++

provides free library for handling password, message verification, one-way hash, public key encryption system and other functions.

There are many very exciting or extremely useful C + + libraries that are limited to our level and the length of the article cannot be included. In the introduction of these have been included in the recent library, because not every one we have used, so there is inevitably biased, please forgive the reader.

Comparison and learning experience of famous C + + program Library

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.