C + + three major libraries boost, Loki, STLportin 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
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.
STL is a standard, and each merchant has developed its own STL version according to this standard. In this variety of STL versions, the SGI STL is undoubtedly the most compelling one. This is of course because the STL product is a pedigree, and its design and writing list, Alexander Stepanov and Matt Austern impressively, there are two masters, its code level naturally has the highest guarantee. SGI STL is not only in the best efficiency, but also in accordance with the ISO C + + standard design, users can rest assured. In addition, SGI STL has done Thread-safe and has also thoughtfully added several components to the user, such as hash, Hash_map,hash_multimap, slist and rope containers, among others. Therefore, the SGI STL should be the first choice in both learning and practicality.
Unfortunately, SGI STL is essentially designed to work with SGI-made Unix variant IRIX, and the C + + compiler on other platforms wants to use SGI STL. Although the famous GNU C + + uses SGI STL, it has been debugged and consolidated before it was released. It is not easy for ordinary users, especially BCB/VC users on the Windows platform, to make their C + + compilers work together with SGI STL. Fortunately, the hero can always appear in time, the Russians Boris Fomitchev notice this problem, the establishment of a free project, known as STLport, is designed to transplant the basic SGI STL code into a variety of mainstream compilation environment, so that all kinds of compiler users can enjoy the SGI The advanced point of STL. STLport development process, has been the kind guidance of Matt Austern, developed to today, is more mature. The latest STLport 4.0, available from www.stlport.org free download, zip file volume of about 1.2M, can support porting to a variety of mainstream C + + compilation environments.
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 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 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.
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/
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.
Library
Network communication
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.
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.
Simplesocket
Reference website: http://home.hetnet.nl/~lcbokkers/simsock.htm
This class library makes it easier to write socket-based client/server programs.
A Stream Socket API for C + +
Reference website: http://www.pcs.cnu.edu/~dgame/sockets/socketsC++/sockets.html
Another package library for the socket.
Xml
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.
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.
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.
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.
CMarkup
Reference website: 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.
libxml++
http://libxmlplusplus.sourceforge.net/
libxml++ is a C + + encapsulated version of the famous Libxml XML parser
Scientific calculations
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++.
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.
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.
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
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.
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.
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
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.
Zthreads
Reference website: http://zthread.sourceforge.net/
An advanced object-oriented, cross-platform C + + thread and synchronization library.
Serialization of
s11n
Reference website: http://s11n.net/
An STL-based C + + library for serializing Pod,stl containers and user-defined types.
Simple XML Persistence Library
Reference website: http://sxp.sourceforge.net/
This is a lightweight C + + library that serializes objects into XML.
String
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.
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.
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
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.
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.
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.
Chilkat C + + Libraries
Reference website: http://www.chilkatsoft.com/cpp_libraries.asp
This is the library that provides zip,e-mail, coding, s/mime,xml and so on.
C + + Portable Types Library (PTypes)
Reference website: http://www.melikyan.com/ptypes/
This is a relatively simple alternative to STL, as well as portable multi-threaded and network libraries.
LFC
Reference website: http://lfc.sourceforge.net/
Oh, this is another C + + library that tries to provide everything
Other libraries
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.
Atl
The ATL (Active Template Library) is a small, efficient, flexible set of classes that provide the basic facilities for creating interoperable COM components.
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.
fact!
Reference website: http://www.kfa-juelich.de/zam/FACT/start/index.html
Another library to implement functional language features
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.
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 + + three major libraries boost, Loki, STLport