howto.html: Document shrink-to-fit reserve().
2003-12-16 Jonathan Wakely <redi@gcc.gnu.org> * docs/html/21_strings/howto.html: Document shrink-to-fit reserve(). * docs/html/faq/index.html: Reducing vector's capacity() to size(). * docs/html/documentation.html, docs/html/faq/index.txt: Regenerate. From-SVN: r74695
This commit is contained in:
parent
1cc82d1389
commit
d159598dda
|
@ -1,3 +1,9 @@
|
||||||
|
2003-12-16 Jonathan Wakely <redi@gcc.gnu.org>
|
||||||
|
|
||||||
|
* docs/html/21_strings/howto.html: Document shrink-to-fit reserve().
|
||||||
|
* docs/html/faq/index.html: Reducing vector's capacity() to size().
|
||||||
|
* docs/html/documentation.html, docs/html/faq/index.txt: Regenerate.
|
||||||
|
|
||||||
2003-12-16 Paolo Carlini <pcarlini@suse.de>
|
2003-12-16 Paolo Carlini <pcarlini@suse.de>
|
||||||
|
|
||||||
* testsuite/performance/narrow_widen_char.cc: Tweak the
|
* testsuite/performance/narrow_widen_char.cc: Tweak the
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
<li><a href="#3">Breaking a C++ string into tokens</a></li>
|
<li><a href="#3">Breaking a C++ string into tokens</a></li>
|
||||||
<li><a href="#4">Simple transformations</a></li>
|
<li><a href="#4">Simple transformations</a></li>
|
||||||
<li><a href="#5">Making strings of arbitrary character types</a></li>
|
<li><a href="#5">Making strings of arbitrary character types</a></li>
|
||||||
|
<li><a href="#6">Shrink-to-fit strings</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
|
@ -443,6 +444,25 @@
|
||||||
<a href="../faq/index.html">to the FAQ</a>.
|
<a href="../faq/index.html">to the FAQ</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
<h2><a name="6">Shrink-to-fit strings</a></h2>
|
||||||
|
<!-- referenced by faq/index.html#5_9, update link if numbering changes -->
|
||||||
|
<p>From GCC 3.4 calling <code>s.reserve(res)</code> on a
|
||||||
|
<code>string s</code> with <code>res < s.capacity()</code> will
|
||||||
|
reduce the string's capacity to <code>std::max(s.size(), res)</code>.
|
||||||
|
</p>
|
||||||
|
<p>This behaviour is suggested, but not required by the standard. Prior
|
||||||
|
to GCC 3.4 the following alternative can be used instead
|
||||||
|
</p>
|
||||||
|
<pre>
|
||||||
|
std::string(str.data(), str.size()).swap(str);
|
||||||
|
</pre>
|
||||||
|
<p>This is similar to the idiom for reducing a <code>vector</code>'s
|
||||||
|
memory usage (see <a href='../faq/index.html#5_9'>FAQ 5.9</a>) but
|
||||||
|
the regular copy constructor cannot be used because libstdc++'s
|
||||||
|
<code>string</code> is Copy-On-Write.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<!-- ####################################################### -->
|
<!-- ####################################################### -->
|
||||||
|
|
||||||
|
|
|
@ -156,6 +156,7 @@
|
||||||
<li><a href="21_strings/howto.html#3">Breaking a C++ string into tokens</a></li>
|
<li><a href="21_strings/howto.html#3">Breaking a C++ string into tokens</a></li>
|
||||||
<li><a href="21_strings/howto.html#4">Simple transformations</a></li>
|
<li><a href="21_strings/howto.html#4">Simple transformations</a></li>
|
||||||
<li><a href="21_strings/howto.html#5">Making strings of arbitrary character types</a></li>
|
<li><a href="21_strings/howto.html#5">Making strings of arbitrary character types</a></li>
|
||||||
|
<li><a href="21_strings/howto.html#6">Shrink-to-fit strings</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
|
@ -118,6 +118,8 @@
|
||||||
<li><a href="#5_6">Is libstdc++-v3 thread-safe?</a> </li>
|
<li><a href="#5_6">Is libstdc++-v3 thread-safe?</a> </li>
|
||||||
<li><a href="#5_7">How do I get a copy of the ISO C++ Standard?</a> </li>
|
<li><a href="#5_7">How do I get a copy of the ISO C++ Standard?</a> </li>
|
||||||
<li><a href="#5_8">What's an ABI and why is it so messy?</a> </li>
|
<li><a href="#5_8">What's an ABI and why is it so messy?</a> </li>
|
||||||
|
<li><a href="#5_9">How do I make std::vector<T>::capacity()
|
||||||
|
== std::vector<T>::size?</a> </li>
|
||||||
</ol>
|
</ol>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
@ -1060,6 +1062,23 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
|
||||||
candidate C++ ABI that encompasses the standard library.
|
candidate C++ ABI that encompasses the standard library.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
<h2><a name="5_9">5.9 How do I make std::vector<T>::capacity()
|
||||||
|
== std::vector<T>::size()?</a> </h2>
|
||||||
|
<!-- referenced by 21_strings/howto.html#6 -->
|
||||||
|
<p>The standard idiom for deallocating a <code>std::vector<T></code>'s
|
||||||
|
unused memory is to create a temporary copy of the vector and swap their
|
||||||
|
contents, e.g. for <code>std::vector<T> v</code>
|
||||||
|
</p>
|
||||||
|
<pre>
|
||||||
|
std::vector<T>(v).swap(v);
|
||||||
|
</pre>
|
||||||
|
<p>The copy will take O(n) time and the swap is constant time.
|
||||||
|
</p>
|
||||||
|
<p>See <a href='../21_strings/howto.html#6'>Shrink-to-fit strings</a> for
|
||||||
|
a similar solution for strings.
|
||||||
|
</p>
|
||||||
|
|
||||||
<!-- ####################################################### -->
|
<!-- ####################################################### -->
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
|
|
|
@ -66,6 +66,8 @@
|
||||||
6. [53]Is libstdc++-v3 thread-safe?
|
6. [53]Is libstdc++-v3 thread-safe?
|
||||||
7. [54]How do I get a copy of the ISO C++ Standard?
|
7. [54]How do I get a copy of the ISO C++ Standard?
|
||||||
8. [55]What's an ABI and why is it so messy?
|
8. [55]What's an ABI and why is it so messy?
|
||||||
|
9. [56]How do I make std::vector<T>::capacity() ==
|
||||||
|
std::vector<T>::size?
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
1.0 General Information
|
1.0 General Information
|
||||||
|
@ -75,19 +77,19 @@
|
||||||
The GNU Standard C++ Library v3 is an ongoing project to implement the
|
The GNU Standard C++ Library v3 is an ongoing project to implement the
|
||||||
ISO 14882 Standard C++ library as described in chapters 17 through 27
|
ISO 14882 Standard C++ library as described in chapters 17 through 27
|
||||||
and annex D. As the library reaches stable plateaus, it is captured in
|
and annex D. As the library reaches stable plateaus, it is captured in
|
||||||
a snapshot and released. The latest release is [56]the fourteenth
|
a snapshot and released. The latest release is [57]the fourteenth
|
||||||
snapshot but newer versions have been included in recent GCC releases.
|
snapshot but newer versions have been included in recent GCC releases.
|
||||||
For those who want to see exactly how far the project has come, or
|
For those who want to see exactly how far the project has come, or
|
||||||
just want the latest bleeding-edge code, the up-to-date source is
|
just want the latest bleeding-edge code, the up-to-date source is
|
||||||
available over anonymous CVS, and can even be browsed over the Web
|
available over anonymous CVS, and can even be browsed over the Web
|
||||||
(see [57]1.4 below).
|
(see [58]1.4 below).
|
||||||
|
|
||||||
The older libstdc++-v2 project is no longer maintained; the code has
|
The older libstdc++-v2 project is no longer maintained; the code has
|
||||||
been completely replaced and rewritten. [58]If you are using V2, then
|
been completely replaced and rewritten. [59]If you are using V2, then
|
||||||
you need to report bugs to your system vendor, not to the V3 list.
|
you need to report bugs to your system vendor, not to the V3 list.
|
||||||
|
|
||||||
A more formal description of the V3 goals can be found in the official
|
A more formal description of the V3 goals can be found in the official
|
||||||
[59]design document.
|
[60]design document.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
1.2 Why should I use libstdc++?
|
1.2 Why should I use libstdc++?
|
||||||
|
@ -100,8 +102,8 @@
|
||||||
|
|
||||||
The GNU C/C++/FORTRAN/<pick-a-language> compiler (gcc, g++, etc) is
|
The GNU C/C++/FORTRAN/<pick-a-language> compiler (gcc, g++, etc) is
|
||||||
widely considered to be one of the leading compilers in the world. Its
|
widely considered to be one of the leading compilers in the world. Its
|
||||||
development has recently been taken over by the [60]GCC team. All of
|
development has recently been taken over by the [61]GCC team. All of
|
||||||
the rapid development and near-legendary [61]portability that are the
|
the rapid development and near-legendary [62]portability that are the
|
||||||
hallmarks of an open-source project are being applied to libstdc++.
|
hallmarks of an open-source project are being applied to libstdc++.
|
||||||
|
|
||||||
That means that all of the Standard classes and functions (such as
|
That means that all of the Standard classes and functions (such as
|
||||||
|
@ -119,16 +121,16 @@
|
||||||
|
|
||||||
Development and discussion is held on the libstdc++ mailing list.
|
Development and discussion is held on the libstdc++ mailing list.
|
||||||
Subscribing to the list, or searching the list archives, is open to
|
Subscribing to the list, or searching the list archives, is open to
|
||||||
everyone. You can read instructions for doing so on the [62]homepage.
|
everyone. You can read instructions for doing so on the [63]homepage.
|
||||||
If you have questions, ideas, code, or are just curious, sign up!
|
If you have questions, ideas, code, or are just curious, sign up!
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
1.4 How do I get libstdc++?
|
1.4 How do I get libstdc++?
|
||||||
|
|
||||||
The [63]homepage has instructions for retrieving the latest CVS
|
The [64]homepage has instructions for retrieving the latest CVS
|
||||||
sources, and for browsing the CVS sources over the web.
|
sources, and for browsing the CVS sources over the web.
|
||||||
|
|
||||||
Stable versions of libstdc++-v3 are included with releases of [64]the
|
Stable versions of libstdc++-v3 are included with releases of [65]the
|
||||||
GCC compilers.
|
GCC compilers.
|
||||||
|
|
||||||
The subset commonly known as the Standard Template Library (chapters
|
The subset commonly known as the Standard Template Library (chapters
|
||||||
|
@ -144,7 +146,7 @@
|
||||||
|
|
||||||
1.6 How do I contribute to the effort?
|
1.6 How do I contribute to the effort?
|
||||||
|
|
||||||
Here is [65]a page devoted to this topic. Subscribing to the mailing
|
Here is [66]a page devoted to this topic. Subscribing to the mailing
|
||||||
list (see above, or the homepage) is a very good idea if you have
|
list (see above, or the homepage) is a very good idea if you have
|
||||||
something to contribute, or if you have spare time and want to help.
|
something to contribute, or if you have spare time and want to help.
|
||||||
Contributions don't have to be in the form of source code; anybody who
|
Contributions don't have to be in the form of source code; anybody who
|
||||||
|
@ -179,11 +181,11 @@
|
||||||
extracted into an updated utilities library, but nobody has started
|
extracted into an updated utilities library, but nobody has started
|
||||||
such a project yet.
|
such a project yet.
|
||||||
|
|
||||||
(The [66]Boost site houses free C++ libraries that do varying things,
|
(The [67]Boost site houses free C++ libraries that do varying things,
|
||||||
and happened to be started by members of the Standards Committee.
|
and happened to be started by members of the Standards Committee.
|
||||||
Certain "useful stuff" classes will probably migrate there.)
|
Certain "useful stuff" classes will probably migrate there.)
|
||||||
|
|
||||||
For the bold and/or desperate, the [67]GCC extensions page describes
|
For the bold and/or desperate, the [68]GCC extensions page describes
|
||||||
where to find the last libg++ source.
|
where to find the last libg++ source.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
|
@ -193,16 +195,16 @@
|
||||||
remains unanswered, then just ask the mailing list. At present, you do
|
remains unanswered, then just ask the mailing list. At present, you do
|
||||||
not need to be subscribed to the list to send a message to it. More
|
not need to be subscribed to the list to send a message to it. More
|
||||||
information is available on the homepage (including how to browse the
|
information is available on the homepage (including how to browse the
|
||||||
list archives); to send to the list, use [68]libstdc++@gcc.gnu.org.
|
list archives); to send to the list, use [69]libstdc++@gcc.gnu.org.
|
||||||
|
|
||||||
If you have a question that you think should be included here, or if
|
If you have a question that you think should be included here, or if
|
||||||
you have a question about a question/answer here, contact [69]Phil
|
you have a question about a question/answer here, contact [70]Phil
|
||||||
Edwards or [70]Gabriel Dos Reis.
|
Edwards or [71]Gabriel Dos Reis.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
1.9 What are the license terms for libstdc++-v3?
|
1.9 What are the license terms for libstdc++-v3?
|
||||||
|
|
||||||
See [71]our license description for these and related questions.
|
See [72]our license description for these and related questions.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
2.0 Installation
|
2.0 Installation
|
||||||
|
@ -219,13 +221,13 @@
|
||||||
* The GNU Autotools are needed if you are messing with the configury
|
* The GNU Autotools are needed if you are messing with the configury
|
||||||
or makefiles.
|
or makefiles.
|
||||||
|
|
||||||
The file [72]documentation.html provides a good overview of the steps
|
The file [73]documentation.html provides a good overview of the steps
|
||||||
necessary to build, install, and use the library. Instructions for
|
necessary to build, install, and use the library. Instructions for
|
||||||
configuring the library with new flags such as --enable-threads are
|
configuring the library with new flags such as --enable-threads are
|
||||||
there also, as well as patches and instructions for working with GCC
|
there also, as well as patches and instructions for working with GCC
|
||||||
2.95.
|
2.95.
|
||||||
|
|
||||||
The top-level install.html and [73]RELEASE-NOTES files contain the
|
The top-level install.html and [74]RELEASE-NOTES files contain the
|
||||||
exact build and installation instructions. You may wish to browse
|
exact build and installation instructions. You may wish to browse
|
||||||
those files over CVSweb ahead of time to get a feel for what's
|
those files over CVSweb ahead of time to get a feel for what's
|
||||||
required. RELEASE-NOTES is located in the ".../docs/17_intro/"
|
required. RELEASE-NOTES is located in the ".../docs/17_intro/"
|
||||||
|
@ -242,8 +244,8 @@
|
||||||
|
|
||||||
The Concurrent Versions System is one of several revision control
|
The Concurrent Versions System is one of several revision control
|
||||||
packages. It was selected for GNU projects because it's free (speech),
|
packages. It was selected for GNU projects because it's free (speech),
|
||||||
free (beer), and very high quality. The [74]CVS entry in the GNU
|
free (beer), and very high quality. The [75]CVS entry in the GNU
|
||||||
software catalogue has a better description as well as a [75]link to
|
software catalogue has a better description as well as a [76]link to
|
||||||
the makers of CVS.
|
the makers of CVS.
|
||||||
|
|
||||||
The "anonymous client checkout" feature of CVS is similar to anonymous
|
The "anonymous client checkout" feature of CVS is similar to anonymous
|
||||||
|
@ -257,7 +259,7 @@
|
||||||
|
|
||||||
libstdc++-v3 comes with its own testsuite. You do not need to actually
|
libstdc++-v3 comes with its own testsuite. You do not need to actually
|
||||||
install the library ("make install") to run the testsuite, but you do
|
install the library ("make install") to run the testsuite, but you do
|
||||||
need DejaGNU, as described [76]here.
|
need DejaGNU, as described [77]here.
|
||||||
|
|
||||||
To run the testsuite on the library after building it, use "make
|
To run the testsuite on the library after building it, use "make
|
||||||
check" while in your build directory. To run the testsuite on the
|
check" while in your build directory. To run the testsuite on the
|
||||||
|
@ -295,7 +297,7 @@
|
||||||
people don't like it, so here are two pseudo-solutions:
|
people don't like it, so here are two pseudo-solutions:
|
||||||
|
|
||||||
If the only functions from libstdc++.a which you need are language
|
If the only functions from libstdc++.a which you need are language
|
||||||
support functions (those listed in [77]clause 18 of the standard,
|
support functions (those listed in [78]clause 18 of the standard,
|
||||||
e.g., new and delete), then try linking against libsupc++.a (usually
|
e.g., new and delete), then try linking against libsupc++.a (usually
|
||||||
specifying -lsupc++ when calling g++ for the final link step will do
|
specifying -lsupc++ when calling g++ for the final link step will do
|
||||||
it). This library contains only those support routines, one per object
|
it). This library contains only those support routines, one per object
|
||||||
|
@ -390,7 +392,7 @@
|
||||||
- < /dev/null" to display a list of predefined macros for any
|
- < /dev/null" to display a list of predefined macros for any
|
||||||
particular installation.
|
particular installation.
|
||||||
|
|
||||||
This has been discussed on the mailing lists [78]quite a bit.
|
This has been discussed on the mailing lists [79]quite a bit.
|
||||||
|
|
||||||
This method is something of a wart. We'd like to find a cleaner
|
This method is something of a wart. We'd like to find a cleaner
|
||||||
solution, but nobody yet has contributed the time.
|
solution, but nobody yet has contributed the time.
|
||||||
|
@ -399,7 +401,7 @@
|
||||||
3.6 OS X ctype.h is broken! How can I hack it?
|
3.6 OS X ctype.h is broken! How can I hack it?
|
||||||
|
|
||||||
This is a long-standing bug in the OS X support. Fortunately, the
|
This is a long-standing bug in the OS X support. Fortunately, the
|
||||||
patch is quite simple, and well-known. [79]Here's a link to the
|
patch is quite simple, and well-known. [80]Here's a link to the
|
||||||
solution.
|
solution.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
|
@ -437,7 +439,7 @@
|
||||||
enable itself.
|
enable itself.
|
||||||
|
|
||||||
You can fix the problems yourself, and learn more about the situation,
|
You can fix the problems yourself, and learn more about the situation,
|
||||||
by reading [80]this short thread ("_GLIBCPP_USE_WCHAR_T undefined in
|
by reading [81]this short thread ("_GLIBCPP_USE_WCHAR_T undefined in
|
||||||
FreeBSD's c++config.h?").
|
FreeBSD's c++config.h?").
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
|
@ -461,7 +463,7 @@
|
||||||
|
|
||||||
For 3.0.1, the most common "bug" is an apparently missing "../" in
|
For 3.0.1, the most common "bug" is an apparently missing "../" in
|
||||||
include/Makefile, resulting in files like gthr.h and gthr-single.h not
|
include/Makefile, resulting in files like gthr.h and gthr-single.h not
|
||||||
being found. Please read [81]the configuration instructions for GCC,
|
being found. Please read [82]the configuration instructions for GCC,
|
||||||
specifically the part about configuring in a separate build directory,
|
specifically the part about configuring in a separate build directory,
|
||||||
and how strongly recommended it is. Building in the source directory
|
and how strongly recommended it is. Building in the source directory
|
||||||
is fragile, is rarely tested, and tends to break, as in this case.
|
is fragile, is rarely tested, and tends to break, as in this case.
|
||||||
|
@ -469,7 +471,7 @@
|
||||||
|
|
||||||
For 3.1, the most common "bug" is a parse error when using <fstream>,
|
For 3.1, the most common "bug" is a parse error when using <fstream>,
|
||||||
ending with a message, "bits/basic_file.h:52: parse error before `{'
|
ending with a message, "bits/basic_file.h:52: parse error before `{'
|
||||||
token." Please read [82]the installation instructions for GCC,
|
token." Please read [83]the installation instructions for GCC,
|
||||||
specifically the part about not installing newer versions on top of
|
specifically the part about not installing newer versions on top of
|
||||||
older versions. If you install 3.1 over a 3.0.x release, then the
|
older versions. If you install 3.1 over a 3.0.x release, then the
|
||||||
wrong basic_file.h header will be found (its location changed between
|
wrong basic_file.h header will be found (its location changed between
|
||||||
|
@ -502,30 +504,30 @@ New:
|
||||||
libstdc++. If you are experiencing one of these problems, you can find
|
libstdc++. If you are experiencing one of these problems, you can find
|
||||||
more information on the libstdc++ and the GCC mailing lists.
|
more information on the libstdc++ and the GCC mailing lists.
|
||||||
|
|
||||||
Before reporting a bug, examine the [83]bugs database with the
|
Before reporting a bug, examine the [84]bugs database with the
|
||||||
category set to "libstdc++". The BUGS file in the source tree also
|
category set to "libstdc++". The BUGS file in the source tree also
|
||||||
tracks known serious problems.
|
tracks known serious problems.
|
||||||
* Debugging is problematic, due to bugs in line-number generation
|
* Debugging is problematic, due to bugs in line-number generation
|
||||||
(mostly fixed in the compiler) and gdb lagging behind the compiler
|
(mostly fixed in the compiler) and gdb lagging behind the compiler
|
||||||
(lack of personnel). We recommend configuring the compiler using
|
(lack of personnel). We recommend configuring the compiler using
|
||||||
--with-dwarf2 if the DWARF2 debugging format is not already the
|
--with-dwarf2 if the DWARF2 debugging format is not already the
|
||||||
default on your platform. Also, [84]changing your GDB settings can
|
default on your platform. Also, [85]changing your GDB settings can
|
||||||
have a profound effect on your C++ debugging experiences. :-)
|
have a profound effect on your C++ debugging experiences. :-)
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
4.3 Bugs in the C++ language/lib specification
|
4.3 Bugs in the C++ language/lib specification
|
||||||
|
|
||||||
Yes, unfortunately, there are some. In a [85]message to the list,
|
Yes, unfortunately, there are some. In a [86]message to the list,
|
||||||
Nathan Myers announced that he has started a list of problems in the
|
Nathan Myers announced that he has started a list of problems in the
|
||||||
ISO C++ Standard itself, especially with regard to the chapters that
|
ISO C++ Standard itself, especially with regard to the chapters that
|
||||||
concern the library. The list itself is [86]posted on his website.
|
concern the library. The list itself is [87]posted on his website.
|
||||||
Developers who are having problems interpreting the Standard may wish
|
Developers who are having problems interpreting the Standard may wish
|
||||||
to consult his notes.
|
to consult his notes.
|
||||||
|
|
||||||
For those people who are not part of the ISO Library Group (i.e.,
|
For those people who are not part of the ISO Library Group (i.e.,
|
||||||
nearly all of us needing to read this page in the first place :-), a
|
nearly all of us needing to read this page in the first place :-), a
|
||||||
public list of the library defects is occasionally published [87]here.
|
public list of the library defects is occasionally published [88]here.
|
||||||
Some of these have resulted in [88]code changes.
|
Some of these have resulted in [89]code changes.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
4.4 Things in libstdc++ that only look like bugs
|
4.4 Things in libstdc++ that only look like bugs
|
||||||
|
@ -557,7 +559,7 @@ New:
|
||||||
state on the previous file. The reason is that the state flags are not
|
state on the previous file. The reason is that the state flags are not
|
||||||
cleared on a successful call to open(). The standard unfortunately did
|
cleared on a successful call to open(). The standard unfortunately did
|
||||||
not specify behavior in this case, and to everybody's great sorrow,
|
not specify behavior in this case, and to everybody's great sorrow,
|
||||||
the [89]proposed LWG resolution in DR #22 is to leave the flags
|
the [90]proposed LWG resolution in DR #22 is to leave the flags
|
||||||
unchanged. You must insert a call to fs.clear() between the calls to
|
unchanged. You must insert a call to fs.clear() between the calls to
|
||||||
close() and open(), and then everything will work like we all expect
|
close() and open(), and then everything will work like we all expect
|
||||||
it to work.
|
it to work.
|
||||||
|
@ -567,7 +569,7 @@ New:
|
||||||
same namespace as other comparison functions (e.g., 'using' them and
|
same namespace as other comparison functions (e.g., 'using' them and
|
||||||
the <iterator> header), then you will suddenly be faced with huge
|
the <iterator> header), then you will suddenly be faced with huge
|
||||||
numbers of ambiguity errors. This was discussed on the -v3 list;
|
numbers of ambiguity errors. This was discussed on the -v3 list;
|
||||||
Nathan Myers [90]sums things up here. The collisions with
|
Nathan Myers [91]sums things up here. The collisions with
|
||||||
vector/string iterator types have been fixed for 3.1.
|
vector/string iterator types have been fixed for 3.1.
|
||||||
|
|
||||||
The g++-3 headers are not ours
|
The g++-3 headers are not ours
|
||||||
|
@ -575,7 +577,7 @@ New:
|
||||||
If you have found an extremely broken header file which is causing
|
If you have found an extremely broken header file which is causing
|
||||||
problems for you, look carefully before submitting a "high" priority
|
problems for you, look carefully before submitting a "high" priority
|
||||||
bug report (which you probably shouldn't do anyhow; see the last
|
bug report (which you probably shouldn't do anyhow; see the last
|
||||||
paragraph of the page describing [91]the GCC bug database).
|
paragraph of the page describing [92]the GCC bug database).
|
||||||
|
|
||||||
If the headers are in ${prefix}/include/g++-3, or if the installed
|
If the headers are in ${prefix}/include/g++-3, or if the installed
|
||||||
library's name looks like libstdc++-2.10.a or libstdc++-libc6-2.10.so,
|
library's name looks like libstdc++-2.10.a or libstdc++-libc6-2.10.so,
|
||||||
|
@ -600,7 +602,7 @@ type has changed in glibc 2.2. The patch is at
|
||||||
http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
|
http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
|
||||||
|
|
||||||
|
|
||||||
Note that 2.95.x shipped with the [92]old v2 library which is no
|
Note that 2.95.x shipped with the [93]old v2 library which is no
|
||||||
longer maintained. Also note that gcc 2.95.3 fixes this problem, but
|
longer maintained. Also note that gcc 2.95.3 fixes this problem, but
|
||||||
requires a separate patch for libstdc++-v3.
|
requires a separate patch for libstdc++-v3.
|
||||||
|
|
||||||
|
@ -613,7 +615,7 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
|
||||||
visibility, or you just plain forgot, etc).
|
visibility, or you just plain forgot, etc).
|
||||||
|
|
||||||
More information, including how to optionally enable/disable the
|
More information, including how to optionally enable/disable the
|
||||||
checks, is available [93]here.
|
checks, is available [94]here.
|
||||||
|
|
||||||
dlopen/dlsym If you are using the C++ library across
|
dlopen/dlsym If you are using the C++ library across
|
||||||
dynamically-loaded objects, make certain that you are passing the
|
dynamically-loaded objects, make certain that you are passing the
|
||||||
|
@ -632,11 +634,11 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
|
||||||
|
|
||||||
"memory leaks" in containers A few people have reported that the
|
"memory leaks" in containers A few people have reported that the
|
||||||
standard containers appear to leak memory when tested with memory
|
standard containers appear to leak memory when tested with memory
|
||||||
checkers such as [94]valgrind. The library's default allocators keep
|
checkers such as [95]valgrind. The library's default allocators keep
|
||||||
free memory in a pool for later reuse, rather than returning it to the
|
free memory in a pool for later reuse, rather than returning it to the
|
||||||
OS. Although this memory is always reachable by the library and is
|
OS. Although this memory is always reachable by the library and is
|
||||||
never lost, memory debugging tools can report it as a leak. If you
|
never lost, memory debugging tools can report it as a leak. If you
|
||||||
want to test the library for memory leaks please read [95]Tips for
|
want to test the library for memory leaks please read [96]Tips for
|
||||||
memory leak hunting first.
|
memory leak hunting first.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
|
@ -644,16 +646,16 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
|
||||||
|
|
||||||
If you have found a bug in the library and you think you have a
|
If you have found a bug in the library and you think you have a
|
||||||
working fix, then send it in! The main GCC site has a page on
|
working fix, then send it in! The main GCC site has a page on
|
||||||
[96]submitting patches that covers the procedure, but for libstdc++
|
[97]submitting patches that covers the procedure, but for libstdc++
|
||||||
you should also send the patch to our mailing list in addition to the
|
you should also send the patch to our mailing list in addition to the
|
||||||
GCC patches mailing list. The libstdc++ [97]contributors' page also
|
GCC patches mailing list. The libstdc++ [98]contributors' page also
|
||||||
talks about how to submit patches.
|
talks about how to submit patches.
|
||||||
|
|
||||||
In addition to the description, the patch, and the ChangeLog entry, it
|
In addition to the description, the patch, and the ChangeLog entry, it
|
||||||
is a Good Thing if you can additionally create a small test program to
|
is a Good Thing if you can additionally create a small test program to
|
||||||
test for the presence of the bug that your patch fixes. Bugs have a
|
test for the presence of the bug that your patch fixes. Bugs have a
|
||||||
way of being reintroduced; if an old bug creeps back in, it will be
|
way of being reintroduced; if an old bug creeps back in, it will be
|
||||||
caught immediately by the [98]testsuite -- but only if such a test
|
caught immediately by the [99]testsuite -- but only if such a test
|
||||||
exists.
|
exists.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
|
@ -687,7 +689,7 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
|
||||||
libstdc++. Some of that is already happening, see 4.2. Some of
|
libstdc++. Some of that is already happening, see 4.2. Some of
|
||||||
those changes are being predicted by the library maintainers, and
|
those changes are being predicted by the library maintainers, and
|
||||||
we add code to the library based on what the current proposed
|
we add code to the library based on what the current proposed
|
||||||
resolution specifies. Those additions are listed in [99]the
|
resolution specifies. Those additions are listed in [100]the
|
||||||
extensions page.
|
extensions page.
|
||||||
2. Performance tuning. Lots of performance tuning. This too is
|
2. Performance tuning. Lots of performance tuning. This too is
|
||||||
already underway for post-3.0 releases, starting with memory
|
already underway for post-3.0 releases, starting with memory
|
||||||
|
@ -703,13 +705,13 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
|
||||||
type from C99.) Bugfixes and rewrites (to improve or fix thread
|
type from C99.) Bugfixes and rewrites (to improve or fix thread
|
||||||
safety, for instance) will of course be a continuing task.
|
safety, for instance) will of course be a continuing task.
|
||||||
|
|
||||||
[100]This question about the next libstdc++ prompted some brief but
|
[101]This question about the next libstdc++ prompted some brief but
|
||||||
interesting [101]speculation.
|
interesting [102]speculation.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
5.3 What about the STL from SGI?
|
5.3 What about the STL from SGI?
|
||||||
|
|
||||||
The [102]STL from SGI, version 3.3, was the most recent merge of the
|
The [103]STL from SGI, version 3.3, was the most recent merge of the
|
||||||
STL codebase. The code in libstdc++ contains many fixes and changes,
|
STL codebase. The code in libstdc++ contains many fixes and changes,
|
||||||
and it is very likely that the SGI code is no longer under active
|
and it is very likely that the SGI code is no longer under active
|
||||||
development. We expect that no future merges will take place.
|
development. We expect that no future merges will take place.
|
||||||
|
@ -763,7 +765,7 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
|
||||||
namespace as the original template. This means you cannot use a
|
namespace as the original template. This means you cannot use a
|
||||||
namespace alias when declaring an explicit specialization.
|
namespace alias when declaring an explicit specialization.
|
||||||
|
|
||||||
Extensions to the library have [103]their own page.
|
Extensions to the library have [104]their own page.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
5.5 [removed]
|
5.5 [removed]
|
||||||
|
@ -816,8 +818,8 @@ a
|
||||||
safe, do not assume that two threads may access a shared standard
|
safe, do not assume that two threads may access a shared standard
|
||||||
library object at the same time.
|
library object at the same time.
|
||||||
|
|
||||||
See chapters [104]17 (library introduction), [105]23 (containers), and
|
See chapters [105]17 (library introduction), [106]23 (containers), and
|
||||||
[106]27 (I/O) for more information.
|
[107]27 (I/O) for more information.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
5.7 How do I get a copy of the ISO C++ Standard?
|
5.7 How do I get a copy of the ISO C++ Standard?
|
||||||
|
@ -828,11 +830,11 @@ a
|
||||||
their two-meeting commitment for voting rights, may get a copy of the
|
their two-meeting commitment for voting rights, may get a copy of the
|
||||||
standard from their respective national standards organization. In the
|
standard from their respective national standards organization. In the
|
||||||
USA, this national standards organization is ANSI and their website is
|
USA, this national standards organization is ANSI and their website is
|
||||||
right [107]here. (And if you've already registered with them, clicking
|
right [108]here. (And if you've already registered with them, clicking
|
||||||
this link will take you to directly to the place where you can
|
this link will take you to directly to the place where you can
|
||||||
[108]buy the standard on-line.
|
[109]buy the standard on-line.
|
||||||
|
|
||||||
Who is your country's member body? Visit the [109]ISO homepage and
|
Who is your country's member body? Visit the [110]ISO homepage and
|
||||||
find out!
|
find out!
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
|
@ -883,8 +885,21 @@ a
|
||||||
encompasses the standard library.
|
encompasses the standard library.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
See [110]license.html for copying conditions. Comments and suggestions
|
5.9 How do I make std::vector<T>::capacity() == std::vector<T>::size()?
|
||||||
are welcome, and may be sent to [111]the libstdc++ mailing list.
|
|
||||||
|
The standard idiom for deallocating a std::vector<T>'s unused memory
|
||||||
|
is to create a temporary copy of the vector and swap their contents,
|
||||||
|
e.g. for std::vector<T> v
|
||||||
|
std::vector<T>(v).swap(v);
|
||||||
|
|
||||||
|
|
||||||
|
The copy will take O(n) time and the swap is constant time.
|
||||||
|
|
||||||
|
See [111]Shrink-to-fit strings for a similar solution for strings.
|
||||||
|
_________________________________________________________________
|
||||||
|
|
||||||
|
See [112]license.html for copying conditions. Comments and suggestions
|
||||||
|
are welcome, and may be sent to [113]the libstdc++ mailing list.
|
||||||
|
|
||||||
References
|
References
|
||||||
|
|
||||||
|
@ -943,59 +958,61 @@ References
|
||||||
53. ../faq/index.html#5_6
|
53. ../faq/index.html#5_6
|
||||||
54. ../faq/index.html#5_7
|
54. ../faq/index.html#5_7
|
||||||
55. ../faq/index.html#5_8
|
55. ../faq/index.html#5_8
|
||||||
56. http://gcc.gnu.org/libstdc++/index.html#download
|
56. ../faq/index.html#5_9
|
||||||
57. ../faq/index.html#1_4
|
57. http://gcc.gnu.org/libstdc++/index.html#download
|
||||||
58. ../faq/index.html#4_4_interface
|
58. ../faq/index.html#1_4
|
||||||
59. ../17_intro/DESIGN
|
59. ../faq/index.html#4_4_interface
|
||||||
60. http://gcc.gnu.org/
|
60. ../17_intro/DESIGN
|
||||||
61. http://gcc.gnu.org/gcc-3.0/buildstat.html
|
61. http://gcc.gnu.org/
|
||||||
62. http://gcc.gnu.org/libstdc++/
|
62. http://gcc.gnu.org/gcc-3.0/buildstat.html
|
||||||
63. http://gcc.gnu.org/libstdc++/
|
63. http://gcc.gnu.org/libstdc++/
|
||||||
64. http://gcc.gnu.org/releases.html
|
64. http://gcc.gnu.org/libstdc++/
|
||||||
65. ../17_intro/contribute.html
|
65. http://gcc.gnu.org/releases.html
|
||||||
66. http://www.boost.org/
|
66. ../17_intro/contribute.html
|
||||||
67. http://gcc.gnu.org/extensions.html
|
67. http://www.boost.org/
|
||||||
68. mailto:libstdc++@gcc.gnu.org
|
68. http://gcc.gnu.org/extensions.html
|
||||||
69. mailto:pme@gcc.gnu.org
|
69. mailto:libstdc++@gcc.gnu.org
|
||||||
70. mailto:gdr@gcc.gnu.org
|
70. mailto:pme@gcc.gnu.org
|
||||||
71. ../17_intro/license.html
|
71. mailto:gdr@gcc.gnu.org
|
||||||
72. ../documentation.html
|
72. ../17_intro/license.html
|
||||||
73. ../17_intro/RELEASE-NOTES
|
73. ../documentation.html
|
||||||
74. http://www.gnu.org/software/cvs/cvs.html
|
74. ../17_intro/RELEASE-NOTES
|
||||||
75. http://www.cvshome.org/
|
75. http://www.gnu.org/software/cvs/cvs.html
|
||||||
76. http://gcc.gnu.org/install/test.html
|
76. http://www.cvshome.org/
|
||||||
77. ../18_support/howto.html
|
77. http://gcc.gnu.org/install/test.html
|
||||||
78. http://gcc.gnu.org/cgi-bin/htsearch?method=and&format=builtin-long&sort=score&words=_XOPEN_SOURCE+Solaris
|
78. ../18_support/howto.html
|
||||||
79. http://gcc.gnu.org/ml/gcc/2002-03/msg00817.html
|
79. http://gcc.gnu.org/cgi-bin/htsearch?method=and&format=builtin-long&sort=score&words=_XOPEN_SOURCE+Solaris
|
||||||
80. http://gcc.gnu.org/ml/libstdc++/2003-02/subjects.html#00286
|
80. http://gcc.gnu.org/ml/gcc/2002-03/msg00817.html
|
||||||
81. http://gcc.gnu.org/install/configure.html
|
81. http://gcc.gnu.org/ml/libstdc++/2003-02/subjects.html#00286
|
||||||
82. http://gcc.gnu.org/install/
|
82. http://gcc.gnu.org/install/configure.html
|
||||||
83. http://gcc.gnu.org/bugs.html
|
83. http://gcc.gnu.org/install/
|
||||||
84. http://gcc.gnu.org/ml/libstdc++/2002-02/msg00034.html
|
84. http://gcc.gnu.org/bugs.html
|
||||||
85. http://gcc.gnu.org/ml/libstdc++/1998/msg00006.html
|
85. http://gcc.gnu.org/ml/libstdc++/2002-02/msg00034.html
|
||||||
86. http://www.cantrip.org/draft-bugs.txt
|
86. http://gcc.gnu.org/ml/libstdc++/1998/msg00006.html
|
||||||
87. http://anubis.dkuug.dk/jtc1/sc22/wg21/
|
87. http://www.cantrip.org/draft-bugs.txt
|
||||||
88. ../faq/index.html#5_2
|
88. http://anubis.dkuug.dk/jtc1/sc22/wg21/
|
||||||
89. ../ext/howto.html#5
|
89. ../faq/index.html#5_2
|
||||||
90. http://gcc.gnu.org/ml/libstdc++/2001-01/msg00247.html
|
90. ../ext/howto.html#5
|
||||||
91. http://gcc.gnu.org/gnatswrite.html
|
91. http://gcc.gnu.org/ml/libstdc++/2001-01/msg00247.html
|
||||||
92. ../faq/index.html#4_4_interface
|
92. http://gcc.gnu.org/gnatswrite.html
|
||||||
93. ../19_diagnostics/howto.html#3
|
93. ../faq/index.html#4_4_interface
|
||||||
94. http://developer.kde.org/~sewardj/
|
94. ../19_diagnostics/howto.html#3
|
||||||
95. ../debug.html#mem
|
95. http://developer.kde.org/~sewardj/
|
||||||
96. http://gcc.gnu.org/contribute.html
|
96. ../debug.html#mem
|
||||||
97. ../17_intro/contribute.html
|
97. http://gcc.gnu.org/contribute.html
|
||||||
98. ../faq/index.html#2_4
|
98. ../17_intro/contribute.html
|
||||||
99. ../ext/howto.html#5
|
99. ../faq/index.html#2_4
|
||||||
100. http://gcc.gnu.org/ml/libstdc++/1999/msg00080.html
|
100. ../ext/howto.html#5
|
||||||
101. http://gcc.gnu.org/ml/libstdc++/1999/msg00084.html
|
101. http://gcc.gnu.org/ml/libstdc++/1999/msg00080.html
|
||||||
102. http://www.sgi.com/tech/stl/
|
102. http://gcc.gnu.org/ml/libstdc++/1999/msg00084.html
|
||||||
103. ../ext/howto.html
|
103. http://www.sgi.com/tech/stl/
|
||||||
104. ../17_intro/howto.html#3
|
104. ../ext/howto.html
|
||||||
105. ../23_containers/howto.html#3
|
105. ../17_intro/howto.html#3
|
||||||
106. ../27_io/howto.html#9
|
106. ../23_containers/howto.html#3
|
||||||
107. http://www.ansi.org/
|
107. ../27_io/howto.html#9
|
||||||
108. http://webstore.ansi.org/ansidocstore/product.asp?sku=ISO%2FIEC+14882%2D1998
|
108. http://www.ansi.org/
|
||||||
109. http://www.iso.ch/
|
109. http://webstore.ansi.org/ansidocstore/product.asp?sku=ISO%2FIEC+14882%2D1998
|
||||||
110. ../17_intro/license.html
|
110. http://www.iso.ch/
|
||||||
111. mailto:libstdc++@gcc.gnu.org
|
111. ../21_strings/howto.html#6
|
||||||
|
112. ../17_intro/license.html
|
||||||
|
113. mailto:libstdc++@gcc.gnu.org
|
||||||
|
|
Loading…
Reference in New Issue