C + + library Rollup

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

C + + library Rollup

Introduction to C + + class libraries
Once again embodies the C + + to maintain core language efficiency at the same time vigorously develop the application library development trend!! 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.

Standard library

1. Dinkumware C + + Library
Reference site: http://www.dinkumware.com
High quality standard library written by P.J Plauger. P.J Plauger is the winner of Dr.dobb's Program Design Excellence Award. Its library has long been adopted by Microsoft, and recently Borland has also made its OEM license, using Dinkumware libraries in its c/c+ + product.

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.

3. SGI STL
Reference site: http://www.roguewave.com
SGI's C + + Standard Template Library.

4, STLport
Reference site: http://www.stlport.org
A cross-platform portable version of the SGI STL library.

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:
Regex
Regular Expression Library
Spirit
LL parser Framework, expressed directly in C + + code EBNF
Graph
Diagram components and Algorithms
Lambda
Define short, anonymous function objects where they are called, useful functional functions
Concept Check
Checking for concept in generic programming
MPL
Meta-programming framework implemented with templates
Thread
Portable C + + multi-line libraries
Python
Map C + + classes and functions into Python
Pool
Memory Pool Management
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. The Chinese version is in the 7th edition of Dr. Dobb's Journal Software Development magazine.
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 (domestic mirror: http://www.c-view.org/tech/lib/boost/index.htm)

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.
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 WINDOWSAPI, can make the programmer's work easier, programming efficiency, 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 WINDOWS95. But there has been a growing trend in recent developments and official support.

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.

3) Wxwindows
Reference website: http://www.wxwindows.org

Now is Wxwidgets,wxwindows is the old name, should Microsoft request change now name.
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.

4) Fox
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.
Reference website: http://www.fox-toolkit.org/

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.

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 GTK is the C + + package version of this library.

Network communication

1) ACE
Reference website: http://www.cs.wustl.edu/~schmidt/ACE.html
The c+ + library represents the ultra-heavyweight network communication development framework. The ACE Adaptive Communication Environment (Adaptivecommunication 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.

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.

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) A Stream Socketapi for C + +
Reference website: http://www.pcs.cnu.edu/~dgame/sockets/socketsC++/sockets.html
Another package library for the socket.

5) gSOAP
gSOAP a cross-platform C and C + + software development Kit. Generates RPC code for C/C + +, XML data binding, and an efficient concrete schema parser for SOAP Web services and other applications, all benefiting from an XML interface. This toolkit provides a comprehensive and transparent XML data-binding solution that autocoding saves a lot of development time to execute C + + in Soap/xml Web services. In addition, XML auto-mapping is greatly simplified by using XML data binding. Application developers no longer need to adjust the application logic of the specific library and XML-centric data, such as the negotiation DOM
Project home: http://gsoap2.sourceforge.net/
Document Address: http://www.cs.fsu.edu/~engelen/soapdoc2.html
: http://www.cs.fsu.edu/~engelen/soapdownload.html

Xml

1) Xerces
Reference website: 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 it added a basic and complete open standard for supporting XML schemas.

2) Xmlbooster
Reference website: http://www.xmlbooster.com/
This library greatly improves the speed of XML parsing by producing a specially crafted parser, and can produce a corresponding GUI program to modify the parser. Another feasible solution is provided in addition to the two main mainstream XML parsing methods of Dom and sax.

3) Pull Parser
Reference website: 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.

4) Xalan
Reference website: http://xml.apache.org/xalan-c/
Xalan is an XSLT processor used to convert an XML document into HTML, plain text, or other XML-type documents.

5) CMarkup
Reference website: http://www.firstobject.com/xml.htm ' >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.

6) libxml++
http://libxmlplusplus.sourceforge.net/
libxml++ is a C + + encapsulated version of the famous Libxml XML parser

7) TinyXML

Scientific calculations

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++.

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.

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.

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.

Game development

1) Audio/video 3dc++ 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.

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.

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.

Thread

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.

2) Zthreads
Reference website: http://zthread.sourceforge.net/
An advanced object-oriented, cross-platform C + + thread and synchronization library.

Serialization of

1) s11n
Reference website: http://s11n.net/
An STL-based C + + library for serializing Pod,stl containers and user-defined types.

2) Simple xmlpersistence Library
Reference website: http://sxp.sourceforge.net/
This is a lightweight C + + library that serializes objects into XML.

String

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.

2) Common texttransformation 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.

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.

Comprehensive

1) p::classes
Reference website: 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.

2) Acdk-artefaktur Component development Kit
Reference website: http://acdk.sourceforge.net/
This is a platform-independent C + + component framework, similar to frameworks in Java or. NET (reflection Mechanics, threading, Unicode, scrap collection, I/O, networking, utilities, XML, and so on), as well as Java, Perl, Python, TCL, Lisp, COM and The integration of CORBA.

3) Dlib C++library
Reference website: http://www.cis.ohio-state.edu/~kingd/dlib/
A synthesis of a variety of classes. Large integers, sockets, threads, GUIs, container classes, and directory-browsing APIs, and so on.

4) Chilkat C++libraries
Reference website: http://www.c ' >http://www.c ' >http://www.c ' >http://www.chilkatsoft.com/cpp_libraries.asp
This is the library that provides zip,e-mail, coding, s/mime,xml and so on.

5) C + + portabletypes Library (PTypes)
Reference website: http://www.melikyan.com/ptypes/' >http://www.melikyan.com/ptypes/
This is a relatively simple alternative to STL, as well as portable multi-threaded and network libraries.

6) LFC
Reference website: http://lfc.sourceforge.net/
Oh, this is another C + + library that tries to provide everything

Other libraries

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.

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.

3) Fc++: thefunctional 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.

4) fact!
Reference website: http://www.kfa-juelich.de/zam/FACT/start/index.html
Another library to implement functional language features

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

6) Managed C++wrapper for ZLib
C + + Class library for compression component zlib

7) Cppsqlite-c++wrapper for SQLite
SQLite C + + package Library

8) Cximage
Image format Conversion


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.

Resources Web site

Just as we can learn the development of computer history by important people in computer history, C + + related People's website can also make us get the most valuable reference and learn from, the following characters we think not to introduce the necessary, only because the following characters in the C + + field status is well known, We will only list the relevant resources for the reader to learn, some of them work at Bell Labs, some work in well-known compiler manufacturers, some are constantly promoting the standardization of language, some for the reader to write a number of thousand Gucci ...
Bjarne Stroustrup http://www.research.att.com/~bs/
Stanley B. Lippman http://blogs.msdn.com/slippman/(Chinese version http://www.zengyihome.net/slippman/index.htm)
Scott Meyers http://www.aristeia.com/
David Musser http://www.cs.rpi.edu/~musser/
Bruce Eckel http://www.bruceeckel.com
Nicolai M. Josuttis http://www.josuttis.com/
Herb Sutter http://www.gotw.ca/
Andrei Alexandrescu http://www.moderncppdesign.com/

C + + library Rollup

Related Article

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.