diff options
Diffstat (limited to 'libstdc++-v3/docs/html/ext/howto.html')
-rw-r--r-- | libstdc++-v3/docs/html/ext/howto.html | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/libstdc++-v3/docs/html/ext/howto.html b/libstdc++-v3/docs/html/ext/howto.html new file mode 100644 index 00000000000..8806e8a1198 --- /dev/null +++ b/libstdc++-v3/docs/html/ext/howto.html @@ -0,0 +1,156 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> +<HTML> +<HEAD> + <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> + <META NAME="AUTHOR" CONTENT="pme@sources.redhat.com (Phil Edwards)"> + <META NAME="KEYWORDS" CONTENT="HOWTO, libstdc++, GCC, g++, libg++, STL"> + <META NAME="DESCRIPTION" CONTENT="Notes for the libstdc++ extensions."> + <META NAME="GENERATOR" CONTENT="vi and eight fingers"> + <TITLE>libstdc++-v3 HOWTO: Extensions</TITLE> +<LINK REL=StyleSheet HREF="../lib3styles.css"> +<!-- $Id: howto.html,v 1.4 2000/12/03 23:47:49 jsm28 Exp $ --> +</HEAD> +<BODY> + +<H1 CLASS="centered"><A NAME="top">Extensions</A></H1> + +<P>Here we will make an attempt at describing the non-Standard extensions to + the library. Some of these are from SGI's STL, some of these are GNU's, + and some just seemed to appear on the doorstep. +</P> +<P><B>Before you leap in and use these</B>, be aware of two things: + <OL> + <LI>Non-Standard means exactly that. The behavior, and the very + existence, of these extensions may change with little or no + warning. (Ideally, the really good ones will appear in the next + revision of C++.) Also, other platforms, other compilers, other + versions of g++ or libstdc++-v3 may not recognize these names, or + treat them differently, or... + <LI>You should know how to <A HREF="../faq/index.html#5_4">access + these headers properly</A>. + </OL> +</P> + + +<!-- ####################################################### --> +<HR> +<H1>Contents</H1> +<UL> + <LI><A HREF="#1">Ropes and trees and hashes, oh my!</A> + <LI><A HREF="#2">Added members</A> + <LI><A HREF="#3">Allocators</A> +</UL> + +<HR> + +<!-- ####################################################### --> + +<H2><A NAME="1">Ropes and trees and hashes, oh my!</A></H2> + <P>The SGI headers + <PRE> + <bvector> + <hash_map> + <hash_set> + <rope> + <slist> + <tree> + </PRE> are all here; <TT><bvector></TT> exposes the old bit_vector + class that was used before specialization of vector<bool> was + available. <TT><hash_map></TT> and <TT><hash_set></TT> + are discussed further below. <TT><rope></TT> is the SGI + specialization for large strings ("rope," "large + strings," get it? love those SGI folks). + <TT><slist></TT> is a singly-linked list, for when the + doubly-linked <TT>list<></TT> is too much space overhead, and + <TT><tree></TT> exposes the red-black tree classes used in the + implementation of the standard maps and sets. + </P> + <P>Okay, about those hashing classes... I'm going to foist most of the + work off onto SGI's own site. + </P> + <P>Each of the associative containers map, multimap, set, and multiset + have a counterpart which uses a + <A HREF="http://www.sgi.com/Technology/STL/HashFunction.html">hashing + function</A> to do the arranging, instead of a strict weak ordering + function. The classes take as one of their template parameters a + function object that will return the hash value; by default, an + instantiation of + <A HREF="http://www.sgi.com/Technology/STL/hash.html">hash</A>. + You should specialize this functor for your class, or define your own, + before trying to use one of the hashing classes. + </P> + <P>The hashing classes support all the usual associative container + functions, as well as some extra constructors specifying the number + of buckets, etc. + </P> + <P>Why would you want to use a hashing class instead of the + "normal" implementations? Matt Austern writes: + <BLOCKQUOTE><EM>[W]ith a well chosen hash function, hash tables + generally provide much better average-case performance than binary + search trees, and much worse worst-case performance. So if your + implementation has hash_map, if you don't mind using nonstandard + components, and if you aren't scared about the possibility of + pathological cases, you'll probably get better performance from + hash_map.</EM></BLOCKQUOTE> + </P> + <P>(Side note: for those of you wondering, <B>"Why wasn't a hash + table included in the Standard in the first #!$@ place?"</B> I'll + give a quick answer: it was proposed, but too late and in too + unorganized a fashion. Some sort of hashing will undoubtably be + included in a future Standard. + </P> + <P>Return <A HREF="#top">to top of page</A> or + <A HREF="../faq/index.html">to the FAQ</A>. + </P> + +<HR> +<H2><A NAME="2">Added members</A></H2> + <P>Some of the classes in the Standard Library have additional + publicly-available members. Of those, some are intended purely for + the implementors, for example, additional typedefs. Those won't be + described here (or anywhere else). This list will grow slowly, since + we expect it to be rare -- most extensions will be self-contained. + </P> + <P> + <UL> + <LI><TT>filebuf</TT>s have another ctor with this signature:<BR> +<TT>basic_filebuf(int __fd, const char* __name, ios_base::openmode __mode);</TT> + <BR>This comes in very handy in a number of places, such as + attaching Unix sockets, pipes, and anything else which uses file + descriptors, into the IOStream buffering classes. The three + arguments are as follows:<BR> + <TT>int __fd, </TT>// open file descriptor<BR> + <TT>const char* __name, </TT><BR> + <TT>ios_base::openmode __mode </TT>// same as the other openmode uses + </UL> + </P> + <P>Return <A HREF="#top">to top of page</A> or + <A HREF="../faq/index.html">to the FAQ</A>. + </P> + +<HR> +<H2><A NAME="3">Allocators</A></H2> + <P>This will be blank for a while. It will describe all of the different + memory allocators, most inherited from SGI's code. Input is solicited. + </P> + <P>Return <A HREF="#top">to top of page</A> or + <A HREF="../faq/index.html">to the FAQ</A>. + </P> + + + + + +<!-- ####################################################### --> + +<HR> +<P CLASS="fineprint"><EM> +Comments and suggestions are welcome, and may be sent to +<A HREF="mailto:pme@sources.redhat.com">Phil Edwards</A> or +<A HREF="mailto:gdr@gcc.gnu.org">Gabriel Dos Reis</A>. +<BR> $Id: howto.html,v 1.4 2000/12/03 23:47:49 jsm28 Exp $ +</EM></P> + + +</BODY> +</HTML> |