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>Chapter 22. HP/SGI Extensions</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><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="extensions.html" title="Part III. Extensions" /><link rel="prev" href="policy_data_structures_ack.html" title="Acknowledgments" /><link rel="next" href="ext_sgi.html" title="Deprecated" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 22. HP/SGI Extensions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="policy_data_structures_ack.html">Prev</a> </td><th width="60%" align="center">Part III. 3 Extensions 4 5</th><td width="20%" align="right"> <a accesskey="n" href="ext_sgi.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.containers"></a>Chapter 22. HP/SGI Extensions</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="ext_containers.html#manual.ext.containers.sgi">Backwards Compatibility</a></span></dt><dt><span class="section"><a href="ext_sgi.html">Deprecated</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.containers.sgi"></a>Backwards Compatibility</h2></div></div></div><p>A few extensions and nods to backwards-compatibility have 6 been made with containers. Those dealing with older SGI-style 7 allocators are dealt with elsewhere. The remaining ones all deal 8 with bits: 9 </p><p>The old pre-standard <code class="code">bit_vector</code> class is 10 present for backwards compatibility. It is simply a typedef for 11 the <code class="code">vector<bool></code> specialization. 12 </p><p>The <code class="code">bitset</code> class has a number of extensions, described in the 13 rest of this item. First, we'll mention that this implementation of 14 <code class="code">bitset<N></code> is specialized for cases where N number of 15 bits will fit into a single word of storage. If your choice of N is 16 within that range (<=32 on i686-pc-linux-gnu, for example), then all 17 of the operations will be faster. 18</p><p>There are 19 versions of single-bit test, set, reset, and flip member functions which 20 do no range-checking. If we call them member functions of an instantiation 21 of <code class="code">bitset<N></code>, then their names and signatures are: 22</p><pre class="programlisting"> 23 bitset<N>& _Unchecked_set (size_t pos); 24 bitset<N>& _Unchecked_set (size_t pos, int val); 25 bitset<N>& _Unchecked_reset (size_t pos); 26 bitset<N>& _Unchecked_flip (size_t pos); 27 bool _Unchecked_test (size_t pos); 28 </pre><p>Note that these may in fact be removed in the future, although we have 29 no present plans to do so (and there doesn't seem to be any immediate 30 reason to). 31</p><p>The member function <code class="code">operator[]</code> on a const bitset returns 32 a bool, and for a non-const bitset returns a <code class="code">reference</code> (a 33 nested type). No range-checking is done on the index argument, in keeping 34 with other containers' <code class="code">operator[]</code> requirements. 35</p><p>Finally, two additional searching functions have been added. They return 36 the index of the first "on" bit, and the index of the first 37 "on" bit that is after <code class="code">prev</code>, respectively: 38</p><pre class="programlisting"> 39 size_t _Find_first() const; 40 size_t _Find_next (size_t prev) const;</pre><p>The same caveat given for the _Unchecked_* functions applies here also. 41</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="policy_data_structures_ack.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_sgi.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Acknowledgments </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Deprecated</td></tr></table></div></body></html>