1 <?xml version=
"1.0" encoding=
"UTF-8" standalone=
"no"?>
2 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns=
"http://www.w3.org/1999/xhtml"><head><meta http-equiv=
"Content-Type" content=
"text/html; charset=UTF-8" /><title>Deprecated
</title><meta name=
"generator" content=
"DocBook XSL-NS Stylesheets V1.78.1" /><meta name=
"keywords" content=
"ISO C++, library" /><meta name=
"keywords" content=
"ISO C++, runtime, library" /><link rel=
"home" href=
"../index.html" title=
"The GNU C++ Library" /><link rel=
"up" href=
"ext_containers.html" title=
"Chapter 23. HP/SGI Extensions" /><link rel=
"prev" href=
"ext_containers.html" title=
"Chapter 23. HP/SGI Extensions" /><link rel=
"next" href=
"ext_utilities.html" title=
"Chapter 24. Utilities" /></head><body><div class=
"navheader"><table width=
"100%" summary=
"Navigation header"><tr><th colspan=
"3" align=
"center">Deprecated
</th></tr><tr><td width=
"20%" align=
"left"><a accesskey=
"p" href=
"ext_containers.html">Prev
</a> </td><th width=
"60%" align=
"center">Chapter
23. HP/SGI Extensions
</th><td width=
"20%" align=
"right"> <a accesskey=
"n" href=
"ext_utilities.html">Next
</a></td></tr></table><hr /></div><div class=
"section"><div class=
"titlepage"><div><div><h2 class=
"title" style=
"clear: both"><a id=
"manual.ext.containers.deprecated_sgi"></a>Deprecated
</h2></div></div></div><p>
3 The SGI hashing classes
<code class=
"classname">hash_set
</code> and
4 <code class=
"classname">hash_set
</code> have been deprecated by the
5 unordered_set, unordered_multiset, unordered_map,
6 unordered_multimap containers in TR1 and C++
11, and
7 may be removed in future releases.
8 </p><p>The SGI headers
</p><pre class=
"programlisting">
14 </pre><p>are all here;
15 <code class=
"filename"><backwards/hash_map
></code> and
16 <code class=
"filename"><backwards/hash_set
></code>
17 are deprecated but available as backwards-compatible extensions,
18 as discussed further below.
19 <code class=
"filename"><ext/rope
></code> is the SGI
20 specialization for large strings (
"rope," "large strings," get it? Love
22 <code class=
"filename"><ext/slist
></code> (superseded in
23 C++
11 by
<code class=
"filename"><forward_list
></code>)
24 is a singly-linked list, for when the doubly-linked
<code class=
"code">list
<></code>
25 is too much space overhead, and
26 <code class=
"filename"><ext/rb_tree
></code> exposes the
27 red-black tree classes used in the implementation of the standard maps
29 </p><p>Each of the associative containers map, multimap, set, and multiset
30 have a counterpart which uses a
31 <a class=
"link" href=
"http://www.sgi.com/tech/stl/HashFunction.html" target=
"_top">hashing
32 function
</a> to do the arranging, instead of a strict weak ordering
33 function. The classes take as one of their template parameters a
34 function object that will return the hash value; by default, an
36 <a class=
"link" href=
"http://www.sgi.com/tech/stl/hash.html" target=
"_top">hash
</a>.
37 You should specialize this functor for your class, or define your own,
38 before trying to use one of the hashing classes.
39 </p><p>The hashing classes support all the usual associative container
40 functions, as well as some extra constructors specifying the number
42 </p><p>Why would you want to use a hashing class instead of the
43 <span class=
"quote">“
<span class=
"quote">normal
</span>”
</span>implementations? Matt Austern writes:
44 </p><div class=
"blockquote"><blockquote class=
"blockquote"><p>
45 <span class=
"emphasis"><em>[W]ith a well chosen hash function, hash tables
46 generally provide much better average-case performance than
47 binary search trees, and much worse worst-case performance. So
48 if your implementation has hash_map, if you don't mind using
49 nonstandard components, and if you aren't scared about the
50 possibility of pathological cases, you'll probably get better
51 performance from hash_map.
53 </p></blockquote></div><p>
54 The deprecated hash tables are superseded by the standard unordered
55 associative containers defined in the ISO C++
2011 standard in the
56 headers
<code class=
"filename"><unordered_map
></code>
57 and
<code class=
"filename"><unordered_set
></code>.
58 </p></div><div class=
"navfooter"><hr /><table width=
"100%" summary=
"Navigation footer"><tr><td width=
"40%" align=
"left"><a accesskey=
"p" href=
"ext_containers.html">Prev
</a> </td><td width=
"20%" align=
"center"><a accesskey=
"u" href=
"ext_containers.html">Up
</a></td><td width=
"40%" align=
"right"> <a accesskey=
"n" href=
"ext_utilities.html">Next
</a></td></tr><tr><td width=
"40%" align=
"left" valign=
"top">Chapter
23. HP/SGI Extensions
</td><td width=
"20%" align=
"center"><a accesskey=
"h" href=
"../index.html">Home
</a></td><td width=
"40%" align=
"right" valign=
"top"> Chapter
24. Utilities
</td></tr></table></div></body></html>