Intro.3: Date tweak.
2002-03-27 Phil Edwards <pme@gcc.gnu.org> * docs/doxygen/Intro.3: Date tweak. * docs/doxygen/TODO: Update. * docs/doxygen/doxygroups.cc: Point to tables.html. * docs/doxygen/mainpage.html: Date tweak. * docs/doxygen/run_doxygen: Version tweak. Copy tables.html over. * docs/doxygen/tables.html: Fill in the blanks. * docs/doxygen/user.cfg.in (ALIASES): Remove maint and endmaint. * include/bits/stl_algo.h: Likewise; use expanded form. * include/bits/stl_alloc.h: Likewise. * include/bits/stl_construct.h: Likewise. * include/bits/stl_deque.h: Likewise. * include/bits/stl_iterator_base_types.h: Likewise. * include/bits/stl_list.h: Likewise. * include/bits/stl_relops.h: Likewise. * include/bits/stl_tempbuf.h: Likewise. * include/bits/stl_vector.h: Likewise. * include/std/std_memory.h: Likewise. * include/bits/stl_deque.h: Point into tables.html and add @ingroup. * include/bits/stl_list.h: Likewise. * include/bits/stl_vector.h: Likewise. From-SVN: r51471
This commit is contained in:
parent
8a12f34cfc
commit
04b7c941e9
18 changed files with 763 additions and 343 deletions
|
@ -1,3 +1,28 @@
|
||||||
|
2002-03-27 Phil Edwards <pme@gcc.gnu.org>
|
||||||
|
|
||||||
|
* docs/doxygen/Intro.3: Date tweak.
|
||||||
|
* docs/doxygen/TODO: Update.
|
||||||
|
* docs/doxygen/doxygroups.cc: Point to tables.html.
|
||||||
|
* docs/doxygen/mainpage.html: Date tweak.
|
||||||
|
* docs/doxygen/run_doxygen: Version tweak. Copy tables.html over.
|
||||||
|
* docs/doxygen/tables.html: Fill in the blanks.
|
||||||
|
|
||||||
|
* docs/doxygen/user.cfg.in (ALIASES): Remove maint and endmaint.
|
||||||
|
* include/bits/stl_algo.h: Likewise; use expanded form.
|
||||||
|
* include/bits/stl_alloc.h: Likewise.
|
||||||
|
* include/bits/stl_construct.h: Likewise.
|
||||||
|
* include/bits/stl_deque.h: Likewise.
|
||||||
|
* include/bits/stl_iterator_base_types.h: Likewise.
|
||||||
|
* include/bits/stl_list.h: Likewise.
|
||||||
|
* include/bits/stl_relops.h: Likewise.
|
||||||
|
* include/bits/stl_tempbuf.h: Likewise.
|
||||||
|
* include/bits/stl_vector.h: Likewise.
|
||||||
|
* include/std/std_memory.h: Likewise.
|
||||||
|
|
||||||
|
* include/bits/stl_deque.h: Point into tables.html and add @ingroup.
|
||||||
|
* include/bits/stl_list.h: Likewise.
|
||||||
|
* include/bits/stl_vector.h: Likewise.
|
||||||
|
|
||||||
2002-03-26 Benjamin Kosnik <bkoz@redhat.com>
|
2002-03-26 Benjamin Kosnik <bkoz@redhat.com>
|
||||||
|
|
||||||
* include/c/: Guard with _CPP_.
|
* include/c/: Guard with _CPP_.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
.\" t
|
.\" t
|
||||||
.\" This man page is released under the FDL as part of libstdc++-v3.
|
.\" This man page is released under the FDL as part of libstdc++-v3.
|
||||||
.TH Intro 3 "27 September 2001" "GNU libstdc++-v3" "Standard C++ Library"
|
.TH Intro 3 "27 March 2002" "GNU libstdc++-v3" "Standard C++ Library"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
Intro \- Introduction to the GNU libstdc++-v3 man pages
|
Intro \- Introduction to the GNU libstdc++-v3 man pages
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
|
@ -48,7 +48,7 @@ SGIextensions A list of the extensions from the SGI STL subset.
|
||||||
Sequences Linear containers.
|
Sequences Linear containers.
|
||||||
.TE
|
.TE
|
||||||
.P
|
.P
|
||||||
The HTML documentation goes into more depth.
|
The HTML documentation typically goes into much more depth.
|
||||||
.SH FILES
|
.SH FILES
|
||||||
Lots!
|
Lots!
|
||||||
.SS Standard Headers
|
.SS Standard Headers
|
||||||
|
|
|
@ -48,10 +48,10 @@ do not have the C code (to which the doxygen comments would be attached),
|
||||||
this would need to be done in entirely separate files, a la doxygroups.cc.
|
this would need to be done in entirely separate files, a la doxygroups.cc.
|
||||||
|
|
||||||
B) Huge chunks of containers and strings are described in common "Tables"
|
B) Huge chunks of containers and strings are described in common "Tables"
|
||||||
in the standard. These are being pseudo-duplicated in tables.html. We can
|
in the standard. These are pseudo-duplicated in tables.html. We can
|
||||||
use doxygen hooks like @pre and @see to reference the tables. Then the
|
use doxygen hooks like @pre and @see to reference the tables. Then the
|
||||||
individual classes would do like the standard does, and only document
|
individual classes do like the standard does, and only document members for
|
||||||
members for which additional info is available.
|
which additional info is available.
|
||||||
|
|
||||||
|
|
||||||
STYLE:
|
STYLE:
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Copyright (C) 2001, 2002 Free Software Foundation, Inc.
|
||||||
|
See license.html for license.
|
||||||
|
|
||||||
This just provides documentation for stuff that doesn't need to be in the
|
This just provides documentation for stuff that doesn't need to be in the
|
||||||
source headers themselves. It is a ".cc" file for the sole cheesy reason
|
source headers themselves. It is a ".cc" file for the sole cheesy reason
|
||||||
that it triggers many different text editors into doing Nice Things when
|
that it triggers many different text editors into doing Nice Things when
|
||||||
|
@ -67,9 +70,8 @@ storing your objects. The objects are destroyed when the container is
|
||||||
itself destroyed. Note that if you are storing pointers in a container,
|
itself destroyed. Note that if you are storing pointers in a container,
|
||||||
@c delete is @e not automatically called on the pointers before destroying them.
|
@c delete is @e not automatically called on the pointers before destroying them.
|
||||||
|
|
||||||
All containers must meet certain requirements. They would be listed here
|
All containers must meet certain requirements, summarized in
|
||||||
except I'm not certain how much of 14882 can be reproduced without a
|
<a href="tables.html">tables</a>.
|
||||||
copyright violation. Reproducing Tables 65 through 69 is a lot of typing...
|
|
||||||
|
|
||||||
The standard containers are further refined into
|
The standard containers are further refined into
|
||||||
@link Sequences Sequences@endlink and
|
@link Sequences Sequences@endlink and
|
||||||
|
@ -92,6 +94,9 @@ the second category of differences, algorithmic complexity. For example, if
|
||||||
you need to perform many inserts and removals from the middle of a sequence,
|
you need to perform many inserts and removals from the middle of a sequence,
|
||||||
@c list would be ideal. But if you need to perform constant-time access to
|
@c list would be ideal. But if you need to perform constant-time access to
|
||||||
random elements of the sequence, then @c list should not be used.
|
random elements of the sequence, then @c list should not be used.
|
||||||
|
|
||||||
|
All sequences must meet certain requirements, summarized in
|
||||||
|
<a href="tables.html">tables</a>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @addtogroup Assoc_containers Associative Containers
|
/** @addtogroup Assoc_containers Associative Containers
|
||||||
|
@ -99,6 +104,11 @@ Associative containers allow fast retrieval of data based on keys.
|
||||||
|
|
||||||
Each container type is parameterized on a @c Key type, and an ordering
|
Each container type is parameterized on a @c Key type, and an ordering
|
||||||
relation used to sort the elements of the container.
|
relation used to sort the elements of the container.
|
||||||
|
|
||||||
|
There should be more text here.
|
||||||
|
|
||||||
|
All associative containers must meet certain requirements, summarized in
|
||||||
|
<a href="tables.html">tables</a>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// // // // // // // // // // // // // // // // // // // // // // // //
|
// // // // // // // // // // // // // // // // // // // // // // // //
|
||||||
|
|
|
@ -16,16 +16,16 @@
|
||||||
directly; it all gets run through Doxygen and re-output.) So lots of
|
directly; it all gets run through Doxygen and re-output.) So lots of
|
||||||
tags were all being mangled.
|
tags were all being mangled.
|
||||||
|
|
||||||
Funk 'dat. Now we let Doxygen do whateer it feels like doing for the
|
Funk 'dat. Now we let Doxygen do whatever it feels like doing for the
|
||||||
index page, and then we just flat copy this over top of it. Voila!
|
index page, and then we just flat copy this over top of it. Voila!
|
||||||
Tags actually work like they're supposed to.
|
Tags actually work like they're supposed to in HTML.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<h1>libstdc++-v3 Source Documentation</h1>
|
<h1>libstdc++-v3 Source Documentation</h1>
|
||||||
|
|
||||||
<h2> Documentation Overview </h2>
|
<h2> Documentation Overview </h2>
|
||||||
|
|
||||||
<p class="smallertext">Generated 2002-02-08.</p>
|
<p class="smallertext">Generated 2002-03-27.</p>
|
||||||
|
|
||||||
<p>There are two types of documentation for libstdc++-v3. One is the
|
<p>There are two types of documentation for libstdc++-v3. One is the
|
||||||
distribution documentation, which can be read online at
|
distribution documentation, which can be read online at
|
||||||
|
@ -122,8 +122,8 @@ href="http://gcc.gnu.org/onlinedocs/libstdc++/17_intro/C++STYLE">C++STYLE</a>.
|
||||||
Hewlett-Packard Company
|
Hewlett-Packard Company
|
||||||
</blockquote>
|
</blockquote>
|
||||||
</p>
|
</p>
|
||||||
<p>Part of the generated documentation is quoted from the C++ standard, which
|
<p>Part of the generated documentation is quoted from the ISO C++ Standard,
|
||||||
is copyright 1998 by Information Technology Industry Council.
|
which is Copyright © 1998 by Information Technology Industry Council.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# Runs doxygen and massages the output files.
|
# Runs doxygen and massages the output files.
|
||||||
|
# Copyright (C) 2001, 2002 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# Synopsis: run_doxygen --mode=[user|maint|man] v3srcdir v3builddir
|
# Synopsis: run_doxygen --mode=[user|maint|man] v3srcdir v3builddir
|
||||||
#
|
#
|
||||||
|
@ -8,7 +9,7 @@
|
||||||
|
|
||||||
|
|
||||||
# We can check now that the version of doxygen is >= this variable.
|
# We can check now that the version of doxygen is >= this variable.
|
||||||
DOXYVER=1.2.12
|
DOXYVER=1.2.14
|
||||||
doxygen=
|
doxygen=
|
||||||
|
|
||||||
find_doxygen() {
|
find_doxygen() {
|
||||||
|
@ -147,6 +148,7 @@ set +e
|
||||||
|
|
||||||
test $do_html = yes && {
|
test $do_html = yes && {
|
||||||
cp ${srcdir}/docs/doxygen/mainpage.html ${outdir}/html_${mode}/index.html
|
cp ${srcdir}/docs/doxygen/mainpage.html ${outdir}/html_${mode}/index.html
|
||||||
|
cp ${srcdir}/docs/doxygen/tables.html ${outdir}/html_${mode}/tables.html
|
||||||
echo ::
|
echo ::
|
||||||
echo :: HTML pages begin with
|
echo :: HTML pages begin with
|
||||||
echo :: ${outdir}/html_${mode}/index.html
|
echo :: ${outdir}/html_${mode}/index.html
|
||||||
|
@ -185,7 +187,8 @@ mv iterator_tags.3 Iterator_types.3
|
||||||
find . -name "[a-z]*" -a ! -name "std_*" -print | xargs rm
|
find . -name "[a-z]*" -a ! -name "std_*" -print | xargs rm
|
||||||
rm -f *.h.3 *config* *.cc.3 *.tcc.3
|
rm -f *.h.3 *config* *.cc.3 *.tcc.3
|
||||||
rm -f *_t.3 # workaround doxygen template parsing bug for now
|
rm -f *_t.3 # workaround doxygen template parsing bug for now
|
||||||
#mkdir trash # this is used to examine what we would have deleted
|
# this is used to examine what we would have deleted, for debugging
|
||||||
|
#mkdir trash
|
||||||
#find . -name "[a-z]*" -a ! -name "std_*" -print | xargs -i mv {} trash
|
#find . -name "[a-z]*" -a ! -name "std_*" -print | xargs -i mv {} trash
|
||||||
#mv *.h.3 *config* *.cc.3 *.tcc.3 *_t.3 trash
|
#mv *.h.3 *config* *.cc.3 *.tcc.3 *_t.3 trash
|
||||||
|
|
||||||
|
|
|
@ -6,27 +6,40 @@
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body bgcolor="#ffffff">
|
<body bgcolor="#ffffff">
|
||||||
<!--
|
|
||||||
Tables can be jumped to with their number, e.g., "tables.html#67".
|
|
||||||
-->
|
|
||||||
|
|
||||||
<h1>Tables</h1>
|
<h1>Tables</h1>
|
||||||
|
|
||||||
<p>Most of the requirements on containers are presented in the ISO standard
|
<p>Most of the requirements on containers are presented in the ISO standard
|
||||||
in the form of tables. In order to avoid massive duplication of effort,
|
in the form of tables. In order to avoid massive duplication of effort
|
||||||
we follow the standard's lead and present the information here.
|
while documenting all the classes, we follow the standard's lead and
|
||||||
Individual classes will only document their departures from these tables
|
present the base information here. Individual classes will only document
|
||||||
(removed functions, additional functions, changes, etc).
|
their departures from these tables (removed functions, additional functions,
|
||||||
|
changes, etc).
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>The numbers are the same as those used in the standard.
|
<p>We will not try to duplicate all of the surrounding text (footnotes,
|
||||||
|
explanations, etc) from the standard, because that would also entail a
|
||||||
|
duplication of effort. Some of the surrounding text has been paraphrased
|
||||||
|
here for clarity. If you are uncertain about the meaning or interpretation
|
||||||
|
of these notes, consult a good textbook, and/or purchase your own copy of
|
||||||
|
the standard (it's cheap, see our FAQ).
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<p>The table numbers are the same as those used in the standard. Tables can
|
||||||
|
be jumped to using their number, e.g., "tables.html#67". Only
|
||||||
|
Tables 65 through 69 are presented. Some of the active Defect Reports
|
||||||
|
are also noted or incorporated.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="smallertext">This will probably be incomplete for a while because
|
||||||
|
filling out the tables is mind-frothingly boring. Also, the HTML table
|
||||||
|
rendering is ugly. (Update: mozilla 0.9.9 looks MUCH better.)</p>
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
<a name="65"><p>
|
<a name="65"><p>
|
||||||
<table cellpadding="3" cellspacing="5" align="center" rules="rows" border="3"
|
<table cellpadding="3" cellspacing="5" align="center" rules="rows" border="3"
|
||||||
cols="3" title="Table 65">
|
cols="4" title="Table 65">
|
||||||
<caption><h2>Table 65 --- Container Requirements</h2></caption>
|
<caption><h2>Table 65 --- Container Requirements</h2></caption>
|
||||||
<tr><th colspan="4">
|
<tr><th colspan="4">
|
||||||
Anything calling itself a container must meet these minimum requirements.
|
Anything calling itself a container must meet these minimum requirements.
|
||||||
|
@ -34,82 +47,240 @@ Anything calling itself a container must meet these minimum requirements.
|
||||||
<tr>
|
<tr>
|
||||||
<td><strong>expression</strong></td>
|
<td><strong>expression</strong></td>
|
||||||
<td><strong>result type</strong></td>
|
<td><strong>result type</strong></td>
|
||||||
<td><strong>notes</strong></td>
|
<td><strong>notes, pre-/post-conditions, assertions</strong></td>
|
||||||
<td><strong>complexity</strong></td>
|
<td><strong>complexity</strong></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td>X::value_type</td>
|
||||||
<td></td>
|
<td>T</td>
|
||||||
<td></td>
|
<td>T is Assignable</td>
|
||||||
<td></td>
|
<td>compile time</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td>X::reference</td>
|
||||||
<td></td>
|
<td>lvalue of T</td>
|
||||||
<td></td>
|
<td> </td>
|
||||||
<td></td>
|
<td>compile time</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td>X::const_reference</td>
|
||||||
<td></td>
|
<td>const lvalue of T</td>
|
||||||
<td></td>
|
<td> </td>
|
||||||
<td></td>
|
<td>compile time</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td>X::iterator</td>
|
||||||
<td></td>
|
<td>iterator type pointing to T</td>
|
||||||
<td></td>
|
<td>Any iterator category except output iterator.
|
||||||
<td></td>
|
Convertible to X::const_iterator.</td>
|
||||||
|
<td>compile time</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>X::const_iterator</td>
|
||||||
|
<td>iterator type pointing to const T</td>
|
||||||
|
<td>Any iterator category except output iterator.</td>
|
||||||
|
<td>compile time</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>X::difference_type</td>
|
||||||
|
<td>signed integral type</td>
|
||||||
|
<td>identical to the difference type of X::iterator and X::const_iterator</td>
|
||||||
|
<td>compile time</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>X::size_type</td>
|
||||||
|
<td>unsigned integral type</td>
|
||||||
|
<td>size_type can represent any non-negative value of difference_type</td>
|
||||||
|
<td>compile time</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>X u;</td>
|
||||||
|
<td> </td>
|
||||||
|
<td>post: u.size() == 0</td>
|
||||||
|
<td>constant</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>X();</td>
|
||||||
|
<td> </td>
|
||||||
|
<td>X().size == 0</td>
|
||||||
|
<td>constant</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>X(a);</td>
|
||||||
|
<td> </td>
|
||||||
|
<td>a == X(a)</td>
|
||||||
|
<td>linear</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>X u(a);<br />X u = a;</td>
|
||||||
|
<td> </td>
|
||||||
|
<td>post: u == a. Equivalent to: X u; u = a;</td>
|
||||||
|
<td>linear</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>(&a)->~X();</td>
|
||||||
|
<td>void</td>
|
||||||
|
<td>dtor is applied to every element of a; all the memory is deallocated</td>
|
||||||
|
<td>linear</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a.begin()</td>
|
||||||
|
<td>iterator; const_iterator for constant a</td>
|
||||||
|
<td> </td>
|
||||||
|
<td>constant</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a.end()</td>
|
||||||
|
<td>iterator; const_iterator for constant a</td>
|
||||||
|
<td> </td>
|
||||||
|
<td>constant</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a == b</td>
|
||||||
|
<td>convertible to bool</td>
|
||||||
|
<td>== is an equivalence relation. a.size()==b.size() &&
|
||||||
|
equal(a.begin(),a.end(),b.begin())</td>
|
||||||
|
<td>linear</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a != b</td>
|
||||||
|
<td>convertible to bool</td>
|
||||||
|
<td>equivalent to !(a==b)</td>
|
||||||
|
<td>linear</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a.swap(b)</td>
|
||||||
|
<td>void</td>
|
||||||
|
<td>swap(a,b)</td>
|
||||||
|
<td>may or may not have constant complexity</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>r = a</td>
|
||||||
|
<td>X&</td>
|
||||||
|
<td>r == a</td>
|
||||||
|
<td>linear</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<!-- a fifth column, "operation semantics," magically appears in the table
|
||||||
|
at this point... wtf? -->
|
||||||
|
<tr>
|
||||||
|
<td>a.size()</td>
|
||||||
|
<td>size_type</td>
|
||||||
|
<!--<td>a.end() - a.begin()</td>-->
|
||||||
|
<td> </td>
|
||||||
|
<td>may or may not have constant complexity</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a.max_size()</td>
|
||||||
|
<td>size_type</td>
|
||||||
|
<!--<td>size() of the largest possible container</td>-->
|
||||||
|
<td> </td>
|
||||||
|
<td>may or may not have constant complexity</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a.empty()</td>
|
||||||
|
<td>convertible to bool</td>
|
||||||
|
<!--<td>a.size() == 0</td>-->
|
||||||
|
<td> </td>
|
||||||
|
<td>constant</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a < b</td>
|
||||||
|
<td>convertible to bool</td>
|
||||||
|
<!--<td>lexographical_compare(a.begin,a.end(),b.begin(),b.end())</td>-->
|
||||||
|
<td>pre: < is defined for T and is a total ordering relation</td>
|
||||||
|
<td>linear</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a > b</td>
|
||||||
|
<td>convertible to bool</td>
|
||||||
|
<!--<td>b < a</td>-->
|
||||||
|
<td> </td>
|
||||||
|
<td>linear</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a <= b</td>
|
||||||
|
<td>convertible to bool</td>
|
||||||
|
<!--<td>!(a > b)</td>-->
|
||||||
|
<td> </td>
|
||||||
|
<td>linear</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a >= b</td>
|
||||||
|
<td>convertible to bool</td>
|
||||||
|
<!--<td>!(a < b)</td>-->
|
||||||
|
<td> </td>
|
||||||
|
<td>linear</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table title="Table 65"></p></a>
|
</table title="Table 65"></p></a>
|
||||||
|
|
||||||
|
|
||||||
<a name="66"><p>
|
<a name="66"><p>
|
||||||
<table cellpadding="3" cellspacing="5" align="center" rules="rows" border="3"
|
<table cellpadding="3" cellspacing="5" align="center" rules="rows" border="3"
|
||||||
cols="3" title="Table 66">
|
cols="4" title="Table 66">
|
||||||
<caption><h2>Table 66 --- Reversible Container Requirements</h2></caption>
|
<caption><h2>Table 66 --- Reversible Container Requirements</h2></caption>
|
||||||
<tr><th colspan="4">
|
<tr><th colspan="4">
|
||||||
If a container's iterator is bidirectional or random-access, then the
|
If a container's iterator is bidirectional or random-access, then the
|
||||||
container also meets these requirements.
|
container also meets these requirements.
|
||||||
Foo, bar, and baz are such containers.
|
Deque, list, vector, map, multimap, set, and multiset are such containers.
|
||||||
</th></tr>
|
</th></tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><strong>expression</strong></td>
|
<td><strong>expression</strong></td>
|
||||||
<td><strong>result type</strong></td>
|
<td><strong>result type</strong></td>
|
||||||
<td><strong>notes</strong></td>
|
<td><strong>notes, pre-/post-conditions, assertions</strong></td>
|
||||||
<td><strong>complexity</strong></td>
|
<td><strong>complexity</strong></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td>X::reverse_iterator</td>
|
||||||
<td></td>
|
<td>iterator type pointing to T</td>
|
||||||
<td></td>
|
<td>reverse_iterator<iterator></td>
|
||||||
<td></td>
|
<td>compile time</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td>X::const_reverse_iterator</td>
|
||||||
<td></td>
|
<td>iterator type pointing to const T</td>
|
||||||
<td></td>
|
<td>reverse_iterator<const_iterator></td>
|
||||||
<td></td>
|
<td>compile time</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td>a.rbegin()</td>
|
||||||
<td></td>
|
<td>reverse_iterator; const_reverse_iterator for constant a</td>
|
||||||
<td></td>
|
<td>reverse_iterator(end())</td>
|
||||||
<td></td>
|
<td>constant</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td>a.rend()</td>
|
||||||
<td></td>
|
<td>reverse_iterator; const_reverse_iterator for constant a</td>
|
||||||
<td></td>
|
<td>reverse_iterator(begin())</td>
|
||||||
<td></td>
|
<td>constant</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table title="Table 66"></p></a>
|
</table title="Table 66"></p></a>
|
||||||
|
|
||||||
|
@ -118,133 +289,330 @@ Foo, bar, and baz are such containers.
|
||||||
<table cellpadding="3" cellspacing="5" align="center" rules="rows" border="3"
|
<table cellpadding="3" cellspacing="5" align="center" rules="rows" border="3"
|
||||||
cols="3" title="Table 67">
|
cols="3" title="Table 67">
|
||||||
<caption><h2>Table 67 --- Sequence Requirements</h2></caption>
|
<caption><h2>Table 67 --- Sequence Requirements</h2></caption>
|
||||||
<tr><th colspan="4">
|
<tr><th colspan="3">
|
||||||
These are in addition to the requirements of <a href="#65">containers</a>.
|
These are in addition to the requirements of <a href="#65">containers</a>.
|
||||||
Foo, bar, and baz are such containers.
|
Deque, list, and vector are such containers.
|
||||||
</th></tr>
|
</th></tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><strong>expression</strong></td>
|
<td><strong>expression</strong></td>
|
||||||
<td><strong>result type</strong></td>
|
<td><strong>result type</strong></td>
|
||||||
<td><strong>notes</strong></td>
|
<td><strong>notes, pre-/post-conditions, assertions</strong></td>
|
||||||
<td><strong>complexity</strong></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td>X(n,t)<br />X a(n,t)</td>
|
||||||
<td></td>
|
<td> </td>
|
||||||
<td></td>
|
<td>constructs a sequence with n copies of t<br />post: size() == n</td>
|
||||||
<td></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td>X(i,j)<br />X a(i,j)</td>
|
||||||
<td></td>
|
<td> </td>
|
||||||
<td></td>
|
<td>constructs a sequence equal to the range [i,j)<br />
|
||||||
<td></td>
|
post: size() == distance(i,j)</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td>a.insert(p,t)</td>
|
||||||
<td></td>
|
<td>iterator (points to the inserted copy of t)</td>
|
||||||
<td></td>
|
<td>inserts a copy of t before p</td>
|
||||||
<td></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td>a.insert(p,n,t)</td>
|
||||||
<td></td>
|
<td>void</td>
|
||||||
<td></td>
|
<td>inserts n copies of t before p</td>
|
||||||
<td></td>
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a.insert(p,i,j)</td>
|
||||||
|
<td>void</td>
|
||||||
|
<td>inserts copies of elements in [i,j) before p<br />
|
||||||
|
pre: i, j are not iterators into a</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a.erase(q)</td>
|
||||||
|
<td>iterator (points to the element following q (prior to erasure))</td>
|
||||||
|
<td>erases the element pointed to by q</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a.erase(q1,q1)</td>
|
||||||
|
<td>iterator (points to the element pointed to by q2 (prior to erasure))</td>
|
||||||
|
<td>erases the elements in the range [q1,q2)</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a.clear()</td>
|
||||||
|
<td>void</td>
|
||||||
|
<td>erase(begin(),end())<br />post: size() == 0</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table title="Table 67"></p></a>
|
</table title="Table 67"></p></a>
|
||||||
|
|
||||||
|
|
||||||
<a name="68"><p>
|
<a name="68"><p>
|
||||||
<table cellpadding="3" cellspacing="5" align="center" rules="rows" border="3"
|
<table cellpadding="3" cellspacing="5" align="center" rules="rows" border="3"
|
||||||
cols="3" title="Table 68">
|
cols="4" title="Table 68">
|
||||||
<caption><h2>Table 68 --- Optional Sequence Operations</h2></caption>
|
<caption><h2>Table 68 --- Optional Sequence Operations</h2></caption>
|
||||||
<tr><th colspan="4">
|
<tr><th colspan="4">
|
||||||
These operations are only included in containers when the operation can be
|
These operations are only included in containers when the operation can be
|
||||||
done in constant time.
|
done in constant time.
|
||||||
Foo, bar, and baz are such containers.
|
|
||||||
</th></tr>
|
</th></tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><strong>expression</strong></td>
|
<td><strong>expression</strong></td>
|
||||||
<td><strong>result type</strong></td>
|
<td><strong>result type</strong></td>
|
||||||
<td><strong>notes</strong></td>
|
<td><strong>operational semantics</strong></td>
|
||||||
<td><strong>complexity</strong></td>
|
<td><strong>container</strong></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td>a.front()</td>
|
||||||
<td></td>
|
<td>reference; const_reference for constant a</td>
|
||||||
<td></td>
|
<td>*a.begin()</td>
|
||||||
<td></td>
|
<td>vector, list, deque</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td>a.back()</td>
|
||||||
<td></td>
|
<td>reference; const_reference for constant a</td>
|
||||||
<td></td>
|
<td>*--a.end()</td>
|
||||||
<td></td>
|
<td>vector, list, deque</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td>a.push_front(x)</td>
|
||||||
<td></td>
|
<td>void</td>
|
||||||
<td></td>
|
<td>a.insert(a.begin(),x)</td>
|
||||||
<td></td>
|
<td>list, deque</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td>a.push_back(x)</td>
|
||||||
<td></td>
|
<td>void</td>
|
||||||
<td></td>
|
<td>a.insert(a.end(),x)</td>
|
||||||
<td></td>
|
<td>vector, list, deque</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a.pop_front()</td>
|
||||||
|
<td>void</td>
|
||||||
|
<td>a.erase(a.begin())</td>
|
||||||
|
<td>list, deque</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a.pop_back()</td>
|
||||||
|
<td>void</td>
|
||||||
|
<td>a.erase(--a.end())</td>
|
||||||
|
<td>vector, list, deque</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a[n]</td>
|
||||||
|
<td>reference; const_reference for constant a</td>
|
||||||
|
<td>*(a.begin() + n)</td>
|
||||||
|
<td>vector, deque</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a.at(n)</td>
|
||||||
|
<td>reference; const_reference for constant a</td>
|
||||||
|
<td>*(a.begin() + n)<br />throws out_of_range if n>=a.size()</td>
|
||||||
|
<td>vector, deque</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table title="Table 68"></p></a>
|
</table title="Table 68"></p></a>
|
||||||
|
|
||||||
|
|
||||||
<a name="69"><p>
|
<a name="69"><p>
|
||||||
<table cellpadding="3" cellspacing="5" align="center" rules="rows" border="3"
|
<table cellpadding="3" cellspacing="5" align="center" rules="rows" border="3"
|
||||||
cols="3" title="Table 69">
|
cols="4" title="Table 69">
|
||||||
<caption><h2>Table 69 --- Associative Container Requirements</h2></caption>
|
<caption><h2>Table 69 --- Associative Container Requirements</h2></caption>
|
||||||
<tr><th colspan="4">
|
<tr><th colspan="4">
|
||||||
These are in addition to the requirements of <a href="#65">containers</a>.
|
These are in addition to the requirements of <a href="#65">containers</a>.
|
||||||
|
Map, multimap, set, and multiset are such containers. An associative
|
||||||
|
container supports <em>unique keys</em> (and is written as
|
||||||
|
<code>a_uniq</code> instead of <code>a</code>) if it may contain at most
|
||||||
|
one element for each key. Otherwise it supports <em>equivalent keys</em>
|
||||||
|
(and is written <code>a_eq</code>). Examples of the former are set and map,
|
||||||
|
examples of the latter are multiset and multimap.
|
||||||
</th></tr>
|
</th></tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><strong>expression</strong></td>
|
<td><strong>expression</strong></td>
|
||||||
<td><strong>result type</strong></td>
|
<td><strong>result type</strong></td>
|
||||||
<td><strong>notes</strong></td>
|
<td><strong>notes, pre-/post-conditions, assertions</strong></td>
|
||||||
<td><strong>complexity</strong></td>
|
<td><strong>complexity</strong></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td>X::key_type</td>
|
||||||
<td></td>
|
<td>Key</td>
|
||||||
<td></td>
|
<td>Key is Assignable</td>
|
||||||
<td></td>
|
<td>compile time</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td>X::key_compare</td>
|
||||||
<td></td>
|
<td>Compare</td>
|
||||||
<td></td>
|
<td>defaults to less<key_type></td>
|
||||||
<td></td>
|
<td>compile time</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td>X::value_compare</td>
|
||||||
<td></td>
|
<td>a binary predicate type</td>
|
||||||
<td></td>
|
<td>same as key_compare for set and multiset; an ordering relation on
|
||||||
<td></td>
|
pairs induced by the first component (Key) for map and multimap</td>
|
||||||
|
<td>compile time</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td></td>
|
<td>X(c)<br />X a(c)</td>
|
||||||
<td></td>
|
<td> </td>
|
||||||
<td></td>
|
<td>constructs an empty container which uses c as a comparison object</td>
|
||||||
<td></td>
|
<td>constant</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>X()<br />X a</td>
|
||||||
|
<td> </td>
|
||||||
|
<td>constructs an empty container using Compare() as a comparison object</td>
|
||||||
|
<td>constant</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>X(i,j,c)<br />X a(i,j,c)</td>
|
||||||
|
<td> </td>
|
||||||
|
<td>constructs an empty container and inserts elements from the range [i,j)
|
||||||
|
into it; uses c as a comparison object</td>
|
||||||
|
<td>NlogN in general where N is distance(i,j); linear if [i,j) is
|
||||||
|
sorted with value_comp()</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>X(i,j)<br />X a(i,j)</td>
|
||||||
|
<td> </td>
|
||||||
|
<td>same as previous, but uses Compare() as a comparison object</td>
|
||||||
|
<td>same as previous</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a.key_comp()</td>
|
||||||
|
<td>X::key_compare</td>
|
||||||
|
<td>returns the comparison object out of which a was constructed</td>
|
||||||
|
<td>constant</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a.value_comp()</td>
|
||||||
|
<td>X::value_compare</td>
|
||||||
|
<td>returns an object constructed out of the comparison object</td>
|
||||||
|
<td>constant</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a_uniq.insert(t)</td>
|
||||||
|
<td>pair<iterator,bool></td>
|
||||||
|
<td>"Inserts t if and only if there is no element in the container with
|
||||||
|
key equivalent to the key of t. The bool component of the returned pair
|
||||||
|
is true -iff- the insertion took place, and the iterator component of
|
||||||
|
the pair points to the element with key equivalent to the key of
|
||||||
|
t."</td> <!-- DR 316 -->
|
||||||
|
<td>logarithmic</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a_eq.insert(t)</td>
|
||||||
|
<td>iterator</td>
|
||||||
|
<td>inserts t, returns the iterator pointing to the inserted element</td>
|
||||||
|
<td>logarithmic</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a.insert(p,t)</td>
|
||||||
|
<td>iterator</td>
|
||||||
|
<td>possibly inserts t (depending on whether a_uniq or a_eq); returns iterator
|
||||||
|
pointing to the element with key equivalent to the key of t; iterator p
|
||||||
|
is a hint pointing to where the insert should start to search</td>
|
||||||
|
<td>logarithmic in general, amortized constant if t is inserted right
|
||||||
|
after p<br />
|
||||||
|
<strong>[but see DR 233 and <a href="
|
||||||
|
http://gcc.gnu.org/onlinedocs/libstdc++/23_containers/howto.html#4">our
|
||||||
|
specific notes</a>]</strong></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a.insert(i,j)</td>
|
||||||
|
<td>void</td>
|
||||||
|
<td>pre: i, j are not iterators into a. possibly inserts each element from
|
||||||
|
the range [i,j) (depending on whether a_uniq or a_eq)</td>
|
||||||
|
<td>Nlog(size()+N) where N is distance(i,j) in general</td> <!-- DR 264 -->
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a.erase(k)</td>
|
||||||
|
<td>size_type</td>
|
||||||
|
<td>erases all elements with key equivalent to k; returns number of erased
|
||||||
|
elements</td>
|
||||||
|
<td>log(size()) + count(k)</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a.erase(q)</td>
|
||||||
|
<td>void</td>
|
||||||
|
<td>erases the element pointed to by q</td>
|
||||||
|
<td>amortized constant</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a.erase(q1,q2)</td>
|
||||||
|
<td>void</td>
|
||||||
|
<td>erases all the elements in the range [q1,q2)</td>
|
||||||
|
<td>log(size()) + distance(q1,q2)</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a.clear()</td>
|
||||||
|
<td>void</td>
|
||||||
|
<td>erases everthing; post: size() == 0</td>
|
||||||
|
<td>linear</td> <!-- DR 224 -->
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a.find(k)</td>
|
||||||
|
<td>iterator; const_iterator for constant a</td>
|
||||||
|
<td>returns iterator pointing to element with key equivalent to k, or
|
||||||
|
a.end() if no such element found</td>
|
||||||
|
<td>logarithmic</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a.count(k)</td>
|
||||||
|
<td>size_type</td>
|
||||||
|
<td>returns number of elements with key equivalent to k</td>
|
||||||
|
<td>log(size()) + count(k)</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a.lower_bound(k)</td>
|
||||||
|
<td>iterator; const_iterator for constant a</td>
|
||||||
|
<td>returns iterator pointing to the first element with key not less than k</td>
|
||||||
|
<td>logarithmic</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a.upper_bound(k)</td>
|
||||||
|
<td>iterator; const_iterator for constant a</td>
|
||||||
|
<td>returns iterator pointing to the first element with key greater than k</td>
|
||||||
|
<td>logarithmic</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>a.equal_range(k)</td>
|
||||||
|
<td>pair<iterator,iterator>;
|
||||||
|
pair<const_iterator, const_iterator> for constant a</td>
|
||||||
|
<td>equivalent to make_pair(a.lower_bound(k), a.upper_bound(k))</td>
|
||||||
|
<td>logarithmic</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table title="Table 69"></p></a>
|
</table title="Table 69"></p></a>
|
||||||
|
|
||||||
|
@ -252,6 +620,8 @@ These are in addition to the requirements of <a href="#65">containers</a>.
|
||||||
<hr />
|
<hr />
|
||||||
<p class="smallertext"><em>
|
<p class="smallertext"><em>
|
||||||
See <a href="mainpage.html">mainpage.html</a> for copying conditions.
|
See <a href="mainpage.html">mainpage.html</a> for copying conditions.
|
||||||
|
See <a href="http://gcc.gnu.org/libstdc++/">the libstdc++-v3 homepage</a>
|
||||||
|
for more information.
|
||||||
</em></p>
|
</em></p>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -222,9 +222,7 @@ GENERATE_BUGLIST = YES
|
||||||
# will result in a user defined paragraph with heading "Side Effects:".
|
# will result in a user defined paragraph with heading "Side Effects:".
|
||||||
# You can put \n's in the value part of an alias to insert newlines.
|
# You can put \n's in the value part of an alias to insert newlines.
|
||||||
|
|
||||||
ALIASES = "maint=@if maint" \
|
ALIASES = "doctodo=@todo\nDoc me! See docs/doxygen/TODO and http://gcc.gnu.org/ml/libstdc++/2002-02/msg00003.html for more."
|
||||||
"endmaint=@endif" \
|
|
||||||
"doctodo=@todo\nDoc me! See docs/doxygen/TODO and http://gcc.gnu.org/ml/libstdc++/2002-02/msg00003.html for more."
|
|
||||||
|
|
||||||
# The ENABLED_SECTIONS tag can be used to enable conditional
|
# The ENABLED_SECTIONS tag can be used to enable conditional
|
||||||
# documentation sections, marked by \if sectionname ... \endif.
|
# documentation sections, marked by \if sectionname ... \endif.
|
||||||
|
|
|
@ -159,9 +159,9 @@ namespace std
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is an overload used by find() for the Input Iterator case.
|
* This is an overload used by find() for the Input Iterator case.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _InputIter, typename _Tp>
|
template<typename _InputIter, typename _Tp>
|
||||||
inline _InputIter
|
inline _InputIter
|
||||||
|
@ -175,9 +175,9 @@ namespace std
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is an overload used by find_if() for the Input Iterator case.
|
* This is an overload used by find_if() for the Input Iterator case.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _InputIter, typename _Predicate>
|
template<typename _InputIter, typename _Predicate>
|
||||||
inline _InputIter
|
inline _InputIter
|
||||||
|
@ -191,9 +191,9 @@ namespace std
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is an overload used by find() for the RAI case.
|
* This is an overload used by find() for the RAI case.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _RandomAccessIter, typename _Tp>
|
template<typename _RandomAccessIter, typename _Tp>
|
||||||
_RandomAccessIter
|
_RandomAccessIter
|
||||||
|
@ -235,9 +235,9 @@ namespace std
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is an overload used by find_if() for the RAI case.
|
* This is an overload used by find_if() for the RAI case.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _RandomAccessIter, typename _Predicate>
|
template<typename _RandomAccessIter, typename _Predicate>
|
||||||
_RandomAccessIter
|
_RandomAccessIter
|
||||||
|
@ -1087,10 +1087,10 @@ namespace std
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is an uglified unique_copy(_InputIter, _InputIter, _OutputIter)
|
* This is an uglified unique_copy(_InputIter, _InputIter, _OutputIter)
|
||||||
* overloaded for output iterators.
|
* overloaded for output iterators.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _InputIter, typename _OutputIter>
|
template<typename _InputIter, typename _OutputIter>
|
||||||
_OutputIter
|
_OutputIter
|
||||||
|
@ -1110,10 +1110,10 @@ namespace std
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is an uglified unique_copy(_InputIter, _InputIter, _OutputIter)
|
* This is an uglified unique_copy(_InputIter, _InputIter, _OutputIter)
|
||||||
* overloaded for forward iterators.
|
* overloaded for forward iterators.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _InputIter, typename _ForwardIter>
|
template<typename _InputIter, typename _ForwardIter>
|
||||||
_ForwardIter
|
_ForwardIter
|
||||||
|
@ -1159,11 +1159,11 @@ namespace std
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is an uglified
|
* This is an uglified
|
||||||
* unique_copy(_InputIter, _InputIter, _OutputIter, _BinaryPredicate)
|
* unique_copy(_InputIter, _InputIter, _OutputIter, _BinaryPredicate)
|
||||||
* overloaded for output iterators.
|
* overloaded for output iterators.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _InputIter, typename _OutputIter, typename _BinaryPredicate>
|
template<typename _InputIter, typename _OutputIter, typename _BinaryPredicate>
|
||||||
_OutputIter
|
_OutputIter
|
||||||
|
@ -1188,11 +1188,11 @@ namespace std
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is an uglified
|
* This is an uglified
|
||||||
* unique_copy(_InputIter, _InputIter, _OutputIter, _BinaryPredicate)
|
* unique_copy(_InputIter, _InputIter, _OutputIter, _BinaryPredicate)
|
||||||
* overloaded for forward iterators.
|
* overloaded for forward iterators.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _InputIter, typename _ForwardIter, typename _BinaryPredicate>
|
template<typename _InputIter, typename _ForwardIter, typename _BinaryPredicate>
|
||||||
_ForwardIter
|
_ForwardIter
|
||||||
|
@ -1301,10 +1301,10 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is an uglified reverse(_BidirectionalIter, _BidirectionalIter)
|
* This is an uglified reverse(_BidirectionalIter, _BidirectionalIter)
|
||||||
* overloaded for bidirectional iterators.
|
* overloaded for bidirectional iterators.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _BidirectionalIter>
|
template<typename _BidirectionalIter>
|
||||||
void
|
void
|
||||||
|
@ -1319,10 +1319,10 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is an uglified reverse(_BidirectionalIter, _BidirectionalIter)
|
* This is an uglified reverse(_BidirectionalIter, _BidirectionalIter)
|
||||||
* overloaded for bidirectional iterators.
|
* overloaded for bidirectional iterators.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _RandomAccessIter>
|
template<typename _RandomAccessIter>
|
||||||
void
|
void
|
||||||
|
@ -1389,9 +1389,9 @@ __result, __binary_pred, _IterType());
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is a helper function for the rotate algorithm specialized on RAIs.
|
* This is a helper function for the rotate algorithm specialized on RAIs.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _EuclideanRingElement>
|
template<typename _EuclideanRingElement>
|
||||||
_EuclideanRingElement
|
_EuclideanRingElement
|
||||||
|
@ -1406,9 +1406,9 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is a helper function for the rotate algorithm.
|
* This is a helper function for the rotate algorithm.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _ForwardIter>
|
template<typename _ForwardIter>
|
||||||
void
|
void
|
||||||
|
@ -1439,9 +1439,9 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is a helper function for the rotate algorithm.
|
* This is a helper function for the rotate algorithm.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _BidirectionalIter>
|
template<typename _BidirectionalIter>
|
||||||
void
|
void
|
||||||
|
@ -1472,9 +1472,9 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is a helper function for the rotate algorithm.
|
* This is a helper function for the rotate algorithm.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _RandomAccessIter>
|
template<typename _RandomAccessIter>
|
||||||
void
|
void
|
||||||
|
@ -1582,13 +1582,13 @@ __result, __binary_pred, _IterType());
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* Return a random number in the range [0, __n). This function encapsulates
|
* Return a random number in the range [0, __n). This function encapsulates
|
||||||
* whether we're using rand (part of the standard C library) or lrand48
|
* whether we're using rand (part of the standard C library) or lrand48
|
||||||
* (not standard, but a much better choice whenever it's available).
|
* (not standard, but a much better choice whenever it's available).
|
||||||
*
|
*
|
||||||
* XXX There is no corresponding encapsulation fn to seed the generator.
|
* XXX There is no corresponding encapsulation fn to seed the generator.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _Distance>
|
template<typename _Distance>
|
||||||
inline _Distance
|
inline _Distance
|
||||||
|
@ -1648,9 +1648,9 @@ __result, __binary_pred, _IterType());
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is a helper function...
|
* This is a helper function...
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _ForwardIter, typename _Predicate>
|
template<typename _ForwardIter, typename _Predicate>
|
||||||
_ForwardIter
|
_ForwardIter
|
||||||
|
@ -1675,9 +1675,9 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is a helper function...
|
* This is a helper function...
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _BidirectionalIter, typename _Predicate>
|
template<typename _BidirectionalIter, typename _Predicate>
|
||||||
_BidirectionalIter
|
_BidirectionalIter
|
||||||
|
@ -1730,9 +1730,9 @@ __result, __binary_pred, _IterType());
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is a helper function...
|
* This is a helper function...
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _ForwardIter, typename _Predicate, typename _Distance>
|
template<typename _ForwardIter, typename _Predicate, typename _Distance>
|
||||||
_ForwardIter
|
_ForwardIter
|
||||||
|
@ -1755,9 +1755,9 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is a helper function...
|
* This is a helper function...
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _ForwardIter, typename _Pointer, typename _Predicate,
|
template<typename _ForwardIter, typename _Pointer, typename _Predicate,
|
||||||
typename _Distance>
|
typename _Distance>
|
||||||
|
@ -1837,9 +1837,9 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is a helper function...
|
* This is a helper function...
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _RandomAccessIter, typename _Tp>
|
template<typename _RandomAccessIter, typename _Tp>
|
||||||
_RandomAccessIter
|
_RandomAccessIter
|
||||||
|
@ -1860,9 +1860,9 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is a helper function...
|
* This is a helper function...
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _RandomAccessIter, typename _Tp, typename _Compare>
|
template<typename _RandomAccessIter, typename _Tp, typename _Compare>
|
||||||
_RandomAccessIter
|
_RandomAccessIter
|
||||||
|
@ -1884,17 +1884,17 @@ __result, __binary_pred, _IterType());
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* @doctodo
|
* @doctodo
|
||||||
* This controls some aspect of the sort routines.
|
* This controls some aspect of the sort routines.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
enum { _M_threshold = 16 };
|
enum { _M_threshold = 16 };
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is a helper function for the sort routine.
|
* This is a helper function for the sort routine.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _RandomAccessIter, typename _Tp>
|
template<typename _RandomAccessIter, typename _Tp>
|
||||||
void
|
void
|
||||||
|
@ -1911,9 +1911,9 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is a helper function for the sort routine.
|
* This is a helper function for the sort routine.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _RandomAccessIter, typename _Tp, typename _Compare>
|
template<typename _RandomAccessIter, typename _Tp, typename _Compare>
|
||||||
void
|
void
|
||||||
|
@ -1930,9 +1930,9 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is a helper function for the sort routine.
|
* This is a helper function for the sort routine.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _RandomAccessIter>
|
template<typename _RandomAccessIter>
|
||||||
void
|
void
|
||||||
|
@ -1953,9 +1953,9 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is a helper function for the sort routine.
|
* This is a helper function for the sort routine.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _RandomAccessIter, typename _Compare>
|
template<typename _RandomAccessIter, typename _Compare>
|
||||||
void
|
void
|
||||||
|
@ -1977,9 +1977,9 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is a helper function for the sort routine.
|
* This is a helper function for the sort routine.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _RandomAccessIter>
|
template<typename _RandomAccessIter>
|
||||||
inline void
|
inline void
|
||||||
|
@ -1992,9 +1992,9 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is a helper function for the sort routine.
|
* This is a helper function for the sort routine.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _RandomAccessIter, typename _Compare>
|
template<typename _RandomAccessIter, typename _Compare>
|
||||||
inline void
|
inline void
|
||||||
|
@ -2008,9 +2008,9 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is a helper function for the sort routine.
|
* This is a helper function for the sort routine.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _RandomAccessIter>
|
template<typename _RandomAccessIter>
|
||||||
void
|
void
|
||||||
|
@ -2025,9 +2025,9 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is a helper function for the sort routine.
|
* This is a helper function for the sort routine.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _RandomAccessIter, typename _Compare>
|
template<typename _RandomAccessIter, typename _Compare>
|
||||||
void
|
void
|
||||||
|
@ -2043,9 +2043,9 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is a helper function for the sort routine.
|
* This is a helper function for the sort routine.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _Size>
|
template<typename _Size>
|
||||||
inline _Size
|
inline _Size
|
||||||
|
@ -2057,9 +2057,9 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is a helper function for the sort routine.
|
* This is a helper function for the sort routine.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _RandomAccessIter, typename _Size>
|
template<typename _RandomAccessIter, typename _Size>
|
||||||
void
|
void
|
||||||
|
@ -2085,9 +2085,9 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is a helper function for the sort routine.
|
* This is a helper function for the sort routine.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _RandomAccessIter, typename _Size, typename _Compare>
|
template<typename _RandomAccessIter, typename _Size, typename _Compare>
|
||||||
void
|
void
|
||||||
|
@ -2166,9 +2166,9 @@ __result, __binary_pred, _IterType());
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is a helper function for the stable sorting routines.
|
* This is a helper function for the stable sorting routines.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _RandomAccessIter>
|
template<typename _RandomAccessIter>
|
||||||
void
|
void
|
||||||
|
@ -2187,9 +2187,9 @@ __result, __binary_pred, _IterType());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is a helper function for the stable sorting routines.
|
* This is a helper function for the stable sorting routines.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _RandomAccessIter, typename _Compare>
|
template<typename _RandomAccessIter, typename _Compare>
|
||||||
void
|
void
|
||||||
|
|
|
@ -50,7 +50,7 @@
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @defgroup Allocators Memory Allocators
|
* @defgroup Allocators Memory Allocators
|
||||||
* @maint
|
* @if maint
|
||||||
* stl_alloc.h implements some node allocators. These are NOT the same as
|
* stl_alloc.h implements some node allocators. These are NOT the same as
|
||||||
* allocators in the C++ standard, nor in the original H-P STL. They do not
|
* allocators in the C++ standard, nor in the original H-P STL. They do not
|
||||||
* encapsulate different pointer types; we assume that there is only one
|
* encapsulate different pointer types; we assume that there is only one
|
||||||
|
@ -72,7 +72,7 @@
|
||||||
*
|
*
|
||||||
* "SGI" allocators may be wrapped in __allocator to convert the interface
|
* "SGI" allocators may be wrapped in __allocator to convert the interface
|
||||||
* into a "standard" one.
|
* into a "standard" one.
|
||||||
* @endmaint
|
* @endif
|
||||||
*
|
*
|
||||||
* The canonical description of these classes is in docs/html/ext/howto.html
|
* The canonical description of these classes is in docs/html/ext/howto.html
|
||||||
* or online at http://gcc.gnu.org/onlinedocs/libstdc++/ext/howto.html#3
|
* or online at http://gcc.gnu.org/onlinedocs/libstdc++/ext/howto.html#3
|
||||||
|
@ -88,11 +88,11 @@
|
||||||
namespace std
|
namespace std
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* A new-based allocator, as required by the standard. Allocation and
|
* A new-based allocator, as required by the standard. Allocation and
|
||||||
* deallocation forward to global new and delete. "SGI" style, minus
|
* deallocation forward to global new and delete. "SGI" style, minus
|
||||||
* reallocate().
|
* reallocate().
|
||||||
* @endmaint
|
* @endif
|
||||||
* (See @link Allocators allocators info @endlink for more.)
|
* (See @link Allocators allocators info @endlink for more.)
|
||||||
*/
|
*/
|
||||||
class __new_alloc
|
class __new_alloc
|
||||||
|
@ -109,13 +109,13 @@ namespace std
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* A malloc-based allocator. Typically slower than the
|
* A malloc-based allocator. Typically slower than the
|
||||||
* __default_alloc_template (below). Typically thread-safe and more
|
* __default_alloc_template (below). Typically thread-safe and more
|
||||||
* storage efficient. The template argument is unused and is only present
|
* storage efficient. The template argument is unused and is only present
|
||||||
* to permit multiple instantiations (but see __default_alloc_template
|
* to permit multiple instantiations (but see __default_alloc_template
|
||||||
* for caveats). "SGI" style, plus __set_malloc_handler for OOM conditions.
|
* for caveats). "SGI" style, plus __set_malloc_handler for OOM conditions.
|
||||||
* @endmaint
|
* @endif
|
||||||
* (See @link Allocators allocators info @endlink for more.)
|
* (See @link Allocators allocators info @endlink for more.)
|
||||||
*/
|
*/
|
||||||
template <int __inst>
|
template <int __inst>
|
||||||
|
@ -207,13 +207,13 @@ namespace std
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is used primarily (only?) in _Alloc_traits and other places to
|
* This is used primarily (only?) in _Alloc_traits and other places to
|
||||||
* help provide the _Alloc_type typedef.
|
* help provide the _Alloc_type typedef.
|
||||||
*
|
*
|
||||||
* This is neither "standard"-conforming nor "SGI". The _Alloc parameter
|
* This is neither "standard"-conforming nor "SGI". The _Alloc parameter
|
||||||
* must be "SGI" style.
|
* must be "SGI" style.
|
||||||
* @endmaint
|
* @endif
|
||||||
* (See @link Allocators allocators info @endlink for more.)
|
* (See @link Allocators allocators info @endlink for more.)
|
||||||
*/
|
*/
|
||||||
template<class _Tp, class _Alloc>
|
template<class _Tp, class _Alloc>
|
||||||
|
@ -235,7 +235,7 @@ namespace std
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* An adaptor for an underlying allocator (_Alloc) to check the size
|
* An adaptor for an underlying allocator (_Alloc) to check the size
|
||||||
* arguments for debugging. Errors are reported using assert; these
|
* arguments for debugging. Errors are reported using assert; these
|
||||||
* checks can be disabled via NDEBUG, but the space penalty is still
|
* checks can be disabled via NDEBUG, but the space penalty is still
|
||||||
|
@ -245,7 +245,7 @@ namespace std
|
||||||
* "There is some evidence that this can confuse Purify." - SGI comment
|
* "There is some evidence that this can confuse Purify." - SGI comment
|
||||||
*
|
*
|
||||||
* This adaptor is "SGI" style. The _Alloc parameter must also be "SGI".
|
* This adaptor is "SGI" style. The _Alloc parameter must also be "SGI".
|
||||||
* @endmaint
|
* @endif
|
||||||
* (See @link Allocators allocators info @endlink for more.)
|
* (See @link Allocators allocators info @endlink for more.)
|
||||||
*/
|
*/
|
||||||
template <class _Alloc>
|
template <class _Alloc>
|
||||||
|
@ -293,7 +293,7 @@ typedef __mem_interface __single_client_alloc;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* Default node allocator. "SGI" style. Uses __mem_interface for its
|
* Default node allocator. "SGI" style. Uses __mem_interface for its
|
||||||
* underlying requests (and makes as few requests as possible).
|
* underlying requests (and makes as few requests as possible).
|
||||||
* **** Currently __mem_interface is always __new_alloc, never __malloc*.
|
* **** Currently __mem_interface is always __new_alloc, never __malloc*.
|
||||||
|
@ -318,7 +318,7 @@ typedef __mem_interface __single_client_alloc;
|
||||||
* approach. If you do not wish to share the free lists with the main
|
* approach. If you do not wish to share the free lists with the main
|
||||||
* default_alloc instance, instantiate this with a non-zero __inst.
|
* default_alloc instance, instantiate this with a non-zero __inst.
|
||||||
*
|
*
|
||||||
* @endmaint
|
* @endif
|
||||||
* (See @link Allocators allocators info @endlink for more.)
|
* (See @link Allocators allocators info @endlink for more.)
|
||||||
*/
|
*/
|
||||||
template<bool __threads, int __inst>
|
template<bool __threads, int __inst>
|
||||||
|
@ -682,14 +682,14 @@ inline bool operator!=(const allocator<_T1>&, const allocator<_T2>&)
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* Allocator adaptor to turn an "SGI" style allocator (e.g., __alloc,
|
* Allocator adaptor to turn an "SGI" style allocator (e.g., __alloc,
|
||||||
* __malloc_alloc_template) into a "standard" conforming allocator. Note
|
* __malloc_alloc_template) into a "standard" conforming allocator. Note
|
||||||
* that this adaptor does *not* assume that all objects of the underlying
|
* that this adaptor does *not* assume that all objects of the underlying
|
||||||
* alloc class are identical, nor does it assume that all of the underlying
|
* alloc class are identical, nor does it assume that all of the underlying
|
||||||
* alloc's member functions are static member functions. Note, also, that
|
* alloc's member functions are static member functions. Note, also, that
|
||||||
* __allocator<_Tp, __alloc> is essentially the same thing as allocator<_Tp>.
|
* __allocator<_Tp, __alloc> is essentially the same thing as allocator<_Tp>.
|
||||||
* @endmaint
|
* @endif
|
||||||
* (See @link Allocators allocators info @endlink for more.)
|
* (See @link Allocators allocators info @endlink for more.)
|
||||||
*/
|
*/
|
||||||
template <class _Tp, class _Alloc>
|
template <class _Tp, class _Alloc>
|
||||||
|
@ -800,7 +800,7 @@ inline bool operator!=(const __debug_alloc<_Alloc>&,
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* Another allocator adaptor: _Alloc_traits. This serves two purposes.
|
* Another allocator adaptor: _Alloc_traits. This serves two purposes.
|
||||||
* First, make it possible to write containers that can use either "SGI"
|
* First, make it possible to write containers that can use either "SGI"
|
||||||
* style allocators or "standard" allocators. Second, provide a mechanism
|
* style allocators or "standard" allocators. Second, provide a mechanism
|
||||||
|
@ -832,7 +832,7 @@ inline bool operator!=(const __debug_alloc<_Alloc>&,
|
||||||
* The size_t parameters are "standard" style (see top of stl_alloc.h) in
|
* The size_t parameters are "standard" style (see top of stl_alloc.h) in
|
||||||
* that they take counts, not sizes.
|
* that they take counts, not sizes.
|
||||||
*
|
*
|
||||||
* @endmaint
|
* @endif
|
||||||
* (See @link Allocators allocators info @endlink for more.)
|
* (See @link Allocators allocators info @endlink for more.)
|
||||||
*/
|
*/
|
||||||
//@{
|
//@{
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// nonstandard construct and destroy functions -*- C++ -*-
|
// nonstandard construct and destroy functions -*- C++ -*-
|
||||||
|
|
||||||
// Copyright (C) 2001 Free Software Foundation, Inc.
|
// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
|
||||||
//
|
//
|
||||||
// This file is part of the GNU ISO C++ Library. This library is free
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
// software; you can redistribute it and/or modify it under the
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
@ -67,10 +67,10 @@
|
||||||
namespace std
|
namespace std
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* Constructs an object in existing memory by invoking an allocated
|
* Constructs an object in existing memory by invoking an allocated
|
||||||
* object's constructor with an initializer.
|
* object's constructor with an initializer.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template <class _T1, class _T2>
|
template <class _T1, class _T2>
|
||||||
inline void
|
inline void
|
||||||
|
@ -78,10 +78,10 @@ namespace std
|
||||||
{ new (static_cast<void*>(__p)) _T1(__value); }
|
{ new (static_cast<void*>(__p)) _T1(__value); }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* Constructs an object in existing memory by invoking an allocated
|
* Constructs an object in existing memory by invoking an allocated
|
||||||
* object's default constructor (no initializers).
|
* object's default constructor (no initializers).
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template <class _T1>
|
template <class _T1>
|
||||||
inline void
|
inline void
|
||||||
|
@ -89,11 +89,11 @@ namespace std
|
||||||
{ new (static_cast<void*>(__p)) _T1(); }
|
{ new (static_cast<void*>(__p)) _T1(); }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* Destroy a range of objects with nontrivial destructors.
|
* Destroy a range of objects with nontrivial destructors.
|
||||||
*
|
*
|
||||||
* This is a helper function used only by _Destroy().
|
* This is a helper function used only by _Destroy().
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template <class _ForwardIterator>
|
template <class _ForwardIterator>
|
||||||
inline void
|
inline void
|
||||||
|
@ -101,13 +101,13 @@ namespace std
|
||||||
{ for ( ; __first != __last; ++__first) _Destroy(&*__first); }
|
{ for ( ; __first != __last; ++__first) _Destroy(&*__first); }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* Destroy a range of objects with trivial destructors. Since the destructors
|
* Destroy a range of objects with trivial destructors. Since the destructors
|
||||||
* are trivial, there's nothing to do and hopefully this function will be
|
* are trivial, there's nothing to do and hopefully this function will be
|
||||||
* entirely optimized away.
|
* entirely optimized away.
|
||||||
*
|
*
|
||||||
* This is a helper function used only by _Destroy().
|
* This is a helper function used only by _Destroy().
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template <class _ForwardIterator>
|
template <class _ForwardIterator>
|
||||||
inline void
|
inline void
|
||||||
|
@ -115,9 +115,9 @@ namespace std
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* Destroy the object pointed to by a pointer type.
|
* Destroy the object pointed to by a pointer type.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template <class _Tp>
|
template <class _Tp>
|
||||||
inline void
|
inline void
|
||||||
|
@ -125,11 +125,11 @@ namespace std
|
||||||
{ __pointer->~_Tp(); }
|
{ __pointer->~_Tp(); }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* Destroy a range of objects. If the value_type of the object has
|
* Destroy a range of objects. If the value_type of the object has
|
||||||
* a trivial destructor, the compiler should optimize all of this
|
* a trivial destructor, the compiler should optimize all of this
|
||||||
* away, otherwise the objects' destructors must be invoked.
|
* away, otherwise the objects' destructors must be invoked.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template <class _ForwardIterator>
|
template <class _ForwardIterator>
|
||||||
inline void
|
inline void
|
||||||
|
@ -146,6 +146,3 @@ namespace std
|
||||||
|
|
||||||
#endif /* _CPP_BITS_STL_CONSTRUCT_H */
|
#endif /* _CPP_BITS_STL_CONSTRUCT_H */
|
||||||
|
|
||||||
// Local Variables:
|
|
||||||
// mode:C++
|
|
||||||
// End:
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// deque implementation -*- C++ -*-
|
// deque implementation -*- C++ -*-
|
||||||
|
|
||||||
// Copyright (C) 2001 Free Software Foundation, Inc.
|
// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
|
||||||
//
|
//
|
||||||
// This file is part of the GNU ISO C++ Library. This library is free
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
// software; you can redistribute it and/or modify it under the
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
@ -73,14 +73,14 @@ namespace std
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* @brief This function controls the size of memory nodes.
|
* @brief This function controls the size of memory nodes.
|
||||||
* @param size The size of an element.
|
* @param size The size of an element.
|
||||||
* @return The number (not bytesize) of elements per node.
|
* @return The number (not bytesize) of elements per node.
|
||||||
*
|
*
|
||||||
* This function started off as a compiler kludge from SGI, but seems to
|
* This function started off as a compiler kludge from SGI, but seems to
|
||||||
* be a useful wrapper around a repeated constant expression.
|
* be a useful wrapper around a repeated constant expression.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
inline size_t
|
inline size_t
|
||||||
__deque_buf_size(size_t __size)
|
__deque_buf_size(size_t __size)
|
||||||
|
@ -94,9 +94,9 @@ __deque_buf_size(size_t __size)
|
||||||
* marking its valid range. Access to elements is done as offsets of either
|
* marking its valid range. Access to elements is done as offsets of either
|
||||||
* of those two, relying on operator overloading in this class.
|
* of those two, relying on operator overloading in this class.
|
||||||
*
|
*
|
||||||
* @maint
|
* @if maint
|
||||||
* All the functions are op overloads except for _M_set_node.
|
* All the functions are op overloads except for _M_set_node.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template <class _Tp, class _Ref, class _Ptr>
|
template <class _Tp, class _Ref, class _Ptr>
|
||||||
struct _Deque_iterator
|
struct _Deque_iterator
|
||||||
|
@ -204,11 +204,11 @@ struct _Deque_iterator
|
||||||
bool operator<=(const _Self& __x) const { return !(__x < *this); }
|
bool operator<=(const _Self& __x) const { return !(__x < *this); }
|
||||||
bool operator>=(const _Self& __x) const { return !(*this < __x); }
|
bool operator>=(const _Self& __x) const { return !(*this < __x); }
|
||||||
|
|
||||||
/** @maint
|
/** @if maint
|
||||||
* Prepares to traverse new_node. Sets everything except _M_cur, which
|
* Prepares to traverse new_node. Sets everything except _M_cur, which
|
||||||
* should therefore be set by the caller immediately afterwards, based on
|
* should therefore be set by the caller immediately afterwards, based on
|
||||||
* _M_first and _M_last.
|
* _M_first and _M_last.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
void _M_set_node(_Map_pointer __new_node) {
|
void _M_set_node(_Map_pointer __new_node) {
|
||||||
_M_node = __new_node;
|
_M_node = __new_node;
|
||||||
|
@ -225,16 +225,16 @@ operator+(ptrdiff_t __n, const _Deque_iterator<_Tp, _Ref, _Ptr>& __x)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// @maint Primary default version. @endmaint
|
/// @if maint Primary default version. @endif
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* Deque base class. It has two purposes. First, its constructor
|
* Deque base class. It has two purposes. First, its constructor
|
||||||
* and destructor allocate (but don't initialize) storage. This makes
|
* and destructor allocate (but don't initialize) storage. This makes
|
||||||
* exception safety easier. Second, the base class encapsulates all of
|
* exception safety easier. Second, the base class encapsulates all of
|
||||||
* the differences between SGI-style allocators and standard-conforming
|
* the differences between SGI-style allocators and standard-conforming
|
||||||
* allocators. There are two versions: this ordinary one, and the
|
* allocators. There are two versions: this ordinary one, and the
|
||||||
* space-saving specialization for instanceless allocators.
|
* space-saving specialization for instanceless allocators.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template <class _Tp, class _Alloc, bool __is_static>
|
template <class _Tp, class _Alloc, bool __is_static>
|
||||||
class _Deque_alloc_base
|
class _Deque_alloc_base
|
||||||
|
@ -270,7 +270,7 @@ protected:
|
||||||
size_t _M_map_size;
|
size_t _M_map_size;
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Specialization for instanceless allocators.
|
/// @if maint Specialization for instanceless allocators. @endif
|
||||||
template <class _Tp, class _Alloc>
|
template <class _Tp, class _Alloc>
|
||||||
class _Deque_alloc_base<_Tp, _Alloc, true>
|
class _Deque_alloc_base<_Tp, _Alloc, true>
|
||||||
{
|
{
|
||||||
|
@ -301,14 +301,14 @@ protected:
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* Deque base class. Using _Alloc_traits in the instantiation of the parent
|
* Deque base class. Using _Alloc_traits in the instantiation of the parent
|
||||||
* class provides the compile-time dispatching mentioned in the parent's docs.
|
* class provides the compile-time dispatching mentioned in the parent's docs.
|
||||||
* This class provides the unified face for deque's allocation.
|
* This class provides the unified face for deque's allocation.
|
||||||
*
|
*
|
||||||
* Nothing in this class ever constructs or destroys an actual Tp element.
|
* Nothing in this class ever constructs or destroys an actual Tp element.
|
||||||
* (Deque handles that itself.) Only/All memory management is performed here.
|
* (Deque handles that itself.) Only/All memory management is performed here.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template <class _Tp, class _Alloc>
|
template <class _Tp, class _Alloc>
|
||||||
class _Deque_base
|
class _Deque_base
|
||||||
|
@ -352,13 +352,13 @@ _Deque_base<_Tp,_Alloc>::~_Deque_base()
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* @brief Layout storage.
|
* @brief Layout storage.
|
||||||
* @param num_elements The count of T's for which to allocate space at first.
|
* @param num_elements The count of T's for which to allocate space at first.
|
||||||
* @return Nothing.
|
* @return Nothing.
|
||||||
*
|
*
|
||||||
* The initial underlying memory layout is a bit complicated...
|
* The initial underlying memory layout is a bit complicated...
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template <class _Tp, class _Alloc>
|
template <class _Tp, class _Alloc>
|
||||||
void
|
void
|
||||||
|
@ -415,6 +415,14 @@ _Deque_base<_Tp,_Alloc>::_M_destroy_nodes(_Tp** __nstart, _Tp** __nfinish)
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @ingroup Containers
|
||||||
|
* @ingroup Sequences
|
||||||
|
*
|
||||||
|
* Meets the requirements of a <a href="tables.html#65">container</a>, a
|
||||||
|
* <a href="tables.html#66">reversible container</a>, and a
|
||||||
|
* <a href="tables.html#67">sequence</a>, including the
|
||||||
|
* <a href="tables.html#68">optional sequence requirements</a>.
|
||||||
|
*
|
||||||
* Placeholder: see http://www.sgi.com/tech/stl/Deque.html for now.
|
* Placeholder: see http://www.sgi.com/tech/stl/Deque.html for now.
|
||||||
*
|
*
|
||||||
* In previous HP/SGI versions of deque, there was an extra template parameter
|
* In previous HP/SGI versions of deque, there was an extra template parameter
|
||||||
|
@ -422,7 +430,7 @@ _Deque_base<_Tp,_Alloc>::_M_destroy_nodes(_Tp** __nstart, _Tp** __nfinish)
|
||||||
* the C++ standard (it can be detected using template template parameters),
|
* the C++ standard (it can be detected using template template parameters),
|
||||||
* and it was removed.
|
* and it was removed.
|
||||||
*
|
*
|
||||||
* @maint
|
* @if maint
|
||||||
* Here's how a deque<Tp> manages memory. Each deque has 4 members:
|
* Here's how a deque<Tp> manages memory. Each deque has 4 members:
|
||||||
*
|
*
|
||||||
* - Tp** _M_map
|
* - Tp** _M_map
|
||||||
|
@ -483,8 +491,7 @@ _Deque_base<_Tp,_Alloc>::_M_destroy_nodes(_Tp** __nstart, _Tp** __nfinish)
|
||||||
* the implementation routines for deque itself work only through the start
|
* the implementation routines for deque itself work only through the start
|
||||||
* and finish iterators. This keeps the routines simple and sane, and we can
|
* and finish iterators. This keeps the routines simple and sane, and we can
|
||||||
* use other standard algorithms as well.
|
* use other standard algorithms as well.
|
||||||
*
|
* @endif
|
||||||
* @endmaint
|
|
||||||
*/
|
*/
|
||||||
template <class _Tp, class _Alloc = allocator<_Tp> >
|
template <class _Tp, class _Alloc = allocator<_Tp> >
|
||||||
class deque : protected _Deque_base<_Tp, _Alloc>
|
class deque : protected _Deque_base<_Tp, _Alloc>
|
||||||
|
@ -524,11 +531,11 @@ protected:
|
||||||
using _Base::_M_allocate_map;
|
using _Base::_M_allocate_map;
|
||||||
using _Base::_M_deallocate_map;
|
using _Base::_M_deallocate_map;
|
||||||
|
|
||||||
/** @maint
|
/** @if maint
|
||||||
* A total of four data members accumulated down the heirarchy. If the
|
* A total of four data members accumulated down the heirarchy. If the
|
||||||
* _Alloc type requires separate instances, then two of them will also be
|
* _Alloc type requires separate instances, then two of them will also be
|
||||||
* included in each deque.
|
* included in each deque.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
using _Base::_M_map;
|
using _Base::_M_map;
|
||||||
using _Base::_M_map_size;
|
using _Base::_M_map_size;
|
||||||
|
@ -1035,7 +1042,7 @@ void deque<_Tp,_Alloc>::clear()
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* @brief Fills the deque with copies of value.
|
* @brief Fills the deque with copies of value.
|
||||||
* @param value Initial value.
|
* @param value Initial value.
|
||||||
* @return Nothing.
|
* @return Nothing.
|
||||||
|
@ -1044,7 +1051,7 @@ void deque<_Tp,_Alloc>::clear()
|
||||||
*
|
*
|
||||||
* This function is called only when the user provides an explicit size (with
|
* This function is called only when the user provides an explicit size (with
|
||||||
* or without an explicit exemplar value).
|
* or without an explicit exemplar value).
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template <class _Tp, class _Alloc>
|
template <class _Tp, class _Alloc>
|
||||||
void deque<_Tp,_Alloc>::_M_fill_initialize(const value_type& __value)
|
void deque<_Tp,_Alloc>::_M_fill_initialize(const value_type& __value)
|
||||||
|
@ -1063,7 +1070,7 @@ void deque<_Tp,_Alloc>::_M_fill_initialize(const value_type& __value)
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @{
|
/** @{
|
||||||
* @maint
|
* @if maint
|
||||||
* @brief Fills the deque with whatever is in [first,last).
|
* @brief Fills the deque with whatever is in [first,last).
|
||||||
* @param first An input iterator.
|
* @param first An input iterator.
|
||||||
* @param last An input iterator.
|
* @param last An input iterator.
|
||||||
|
@ -1072,7 +1079,7 @@ void deque<_Tp,_Alloc>::_M_fill_initialize(const value_type& __value)
|
||||||
* If the iterators are actually forward iterators (or better), then the
|
* If the iterators are actually forward iterators (or better), then the
|
||||||
* memory layout can be done all at once. Else we move forward using
|
* memory layout can be done all at once. Else we move forward using
|
||||||
* push_back on each value from the iterator.
|
* push_back on each value from the iterator.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template <class _Tp, class _Alloc> template <class _InputIterator>
|
template <class _Tp, class _Alloc> template <class _InputIterator>
|
||||||
void deque<_Tp,_Alloc>::_M_range_initialize(_InputIterator __first,
|
void deque<_Tp,_Alloc>::_M_range_initialize(_InputIterator __first,
|
||||||
|
@ -1570,6 +1577,3 @@ inline void swap(deque<_Tp,_Alloc>& __x, deque<_Tp,_Alloc>& __y) {
|
||||||
|
|
||||||
#endif /* __GLIBCPP_INTERNAL_DEQUE_H */
|
#endif /* __GLIBCPP_INTERNAL_DEQUE_H */
|
||||||
|
|
||||||
// Local Variables:
|
|
||||||
// mode:C++
|
|
||||||
// End:
|
|
||||||
|
|
|
@ -146,10 +146,10 @@ namespace std
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This function is not a part of the C++ standard but is syntactic
|
* This function is not a part of the C++ standard but is syntactic
|
||||||
* sugar for internal library use only.
|
* sugar for internal library use only.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template<typename _Iter>
|
template<typename _Iter>
|
||||||
inline typename iterator_traits<_Iter>::iterator_category
|
inline typename iterator_traits<_Iter>::iterator_category
|
||||||
|
@ -160,7 +160,3 @@ namespace std
|
||||||
|
|
||||||
#endif /* __GLIBCPP_INTERNAL_ITERATOR_BASE_TYPES_H */
|
#endif /* __GLIBCPP_INTERNAL_ITERATOR_BASE_TYPES_H */
|
||||||
|
|
||||||
|
|
||||||
// Local Variables:
|
|
||||||
// mode:C++
|
|
||||||
// End:
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// List implementation -*- C++ -*-
|
// List implementation -*- C++ -*-
|
||||||
|
|
||||||
// Copyright (C) 2001 Free Software Foundation, Inc.
|
// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
|
||||||
//
|
//
|
||||||
// This file is part of the GNU ISO C++ Library. This library is free
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
// software; you can redistribute it and/or modify it under the
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
@ -273,7 +273,19 @@ namespace std
|
||||||
void clear();
|
void clear();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ingroup Containers
|
||||||
|
* @ingroup Sequences
|
||||||
|
*
|
||||||
|
* Meets the requirements of a <a href="tables.html#65">container</a>, a
|
||||||
|
* <a href="tables.html#66">reversible container</a>, and a
|
||||||
|
* <a href="tables.html#67">sequence</a>, including the
|
||||||
|
* <a href="tables.html#68">optional sequence requirements</a> with the
|
||||||
|
* %exception of @c at and @c operator[].
|
||||||
|
*
|
||||||
|
* @doctodo
|
||||||
|
*
|
||||||
|
*/
|
||||||
template<typename _Tp, typename _Alloc = allocator<_Tp> >
|
template<typename _Tp, typename _Alloc = allocator<_Tp> >
|
||||||
class list : protected _List_base<_Tp, _Alloc>
|
class list : protected _List_base<_Tp, _Alloc>
|
||||||
{
|
{
|
||||||
|
|
|
@ -57,7 +57,7 @@
|
||||||
* This is an internal header file, included by other library headers.
|
* This is an internal header file, included by other library headers.
|
||||||
* You should not attempt to use it directly.
|
* You should not attempt to use it directly.
|
||||||
*
|
*
|
||||||
* @maint
|
* @if maint
|
||||||
* Inclusion of this file has been removed from
|
* Inclusion of this file has been removed from
|
||||||
* all of the other STL headers for safety reasons, except std_utility.h.
|
* all of the other STL headers for safety reasons, except std_utility.h.
|
||||||
* For more information, see the thread of about twenty messages starting
|
* For more information, see the thread of about twenty messages starting
|
||||||
|
@ -65,7 +65,7 @@
|
||||||
* FAQ at http://gcc.gnu.org/onlinedocs/libstdc++/faq/index.html#4_4 .
|
* FAQ at http://gcc.gnu.org/onlinedocs/libstdc++/faq/index.html#4_4 .
|
||||||
*
|
*
|
||||||
* Short summary: the rel_ops operators should be avoided for the present.
|
* Short summary: the rel_ops operators should be avoided for the present.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _CPP_BITS_STL_RELOPS_H
|
#ifndef _CPP_BITS_STL_RELOPS_H
|
||||||
|
|
|
@ -65,11 +65,11 @@ namespace std
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This class is used in two places: stl_algo.h and ext/memory, where it
|
* This class is used in two places: stl_algo.h and ext/memory, where it
|
||||||
* is wrapped as the temporary_buffer class. See temporary_buffer docs for
|
* is wrapped as the temporary_buffer class. See temporary_buffer docs for
|
||||||
* more notes.
|
* more notes.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template <class _ForwardIterator, class _Tp>
|
template <class _ForwardIterator, class _Tp>
|
||||||
class _Temporary_buffer
|
class _Temporary_buffer
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// Vector implementation -*- C++ -*-
|
// Vector implementation -*- C++ -*-
|
||||||
|
|
||||||
// Copyright (C) 2001 Free Software Foundation, Inc.
|
// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
|
||||||
//
|
//
|
||||||
// This file is part of the GNU ISO C++ Library. This library is free
|
// This file is part of the GNU ISO C++ Library. This library is free
|
||||||
// software; you can redistribute it and/or modify it under the
|
// software; you can redistribute it and/or modify it under the
|
||||||
|
@ -148,6 +148,15 @@ struct _Vector_base
|
||||||
* @brief A standard container which offers fixed time access to individual
|
* @brief A standard container which offers fixed time access to individual
|
||||||
* elements in any order.
|
* elements in any order.
|
||||||
*
|
*
|
||||||
|
* @ingroup Containers
|
||||||
|
* @ingroup Sequences
|
||||||
|
*
|
||||||
|
* Meets the requirements of a <a href="tables.html#65">container</a>, a
|
||||||
|
* <a href="tables.html#66">reversible container</a>, and a
|
||||||
|
* <a href="tables.html#67">sequence</a>, including the
|
||||||
|
* <a href="tables.html#68">optional sequence requirements</a> with the
|
||||||
|
* %exception of @c push_front and @c pop_front.
|
||||||
|
*
|
||||||
* In some terminology a vector can be described as a dynamic C-style array,
|
* In some terminology a vector can be described as a dynamic C-style array,
|
||||||
* it offers fast and efficient access to individual elements in any order
|
* it offers fast and efficient access to individual elements in any order
|
||||||
* and saves the user from worrying about memory and size allocation.
|
* and saves the user from worrying about memory and size allocation.
|
||||||
|
|
|
@ -62,10 +62,10 @@ namespace std
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @maint
|
* @if maint
|
||||||
* This is a helper function. The unused second parameter exists to
|
* This is a helper function. The unused second parameter exists to
|
||||||
* permit the real get_temporary_buffer to use template parameter deduction.
|
* permit the real get_temporary_buffer to use template parameter deduction.
|
||||||
* @endmaint
|
* @endif
|
||||||
*/
|
*/
|
||||||
template <class _Tp>
|
template <class _Tp>
|
||||||
pair<_Tp*, ptrdiff_t>
|
pair<_Tp*, ptrdiff_t>
|
||||||
|
@ -202,7 +202,3 @@ public:
|
||||||
|
|
||||||
#endif /* _CPP_MEMORY */
|
#endif /* _CPP_MEMORY */
|
||||||
|
|
||||||
|
|
||||||
// Local Variables:
|
|
||||||
// mode:C++
|
|
||||||
// End:
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue