2012-03-27 23:13:14 +00:00
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2014-09-21 17:33:12 +00:00
<!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 23. HP/SGI Extensions< / 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 = "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 23. 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.
2012-03-27 23:13:14 +00:00
Extensions
2014-09-21 17:33:12 +00:00
< / 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 23. 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
2012-03-27 23:13:14 +00:00
been made with containers. Those dealing with older SGI-style
allocators are dealt with elsewhere. The remaining ones all deal
with bits:
< / p > < p > The old pre-standard < code class = "code" > bit_vector< / code > class is
present for backwards compatibility. It is simply a typedef for
the < code class = "code" > vector< bool> < / code > specialization.
< / p > < p > The < code class = "code" > bitset< / code > class has a number of extensions, described in the
rest of this item. First, we'll mention that this implementation of
< code class = "code" > bitset< N> < / code > is specialized for cases where N number of
bits will fit into a single word of storage. If your choice of N is
within that range (< =32 on i686-pc-linux-gnu, for example), then all
of the operations will be faster.
< / p > < p > There are
versions of single-bit test, set, reset, and flip member functions which
do no range-checking. If we call them member functions of an instantiation
of < code class = "code" > bitset< N> < / code > , then their names and signatures are:
< / p > < pre class = "programlisting" >
bitset< N> & _Unchecked_set (size_t pos);
bitset< N> & _Unchecked_set (size_t pos, int val);
bitset< N> & _Unchecked_reset (size_t pos);
bitset< N> & _Unchecked_flip (size_t pos);
bool _Unchecked_test (size_t pos);
< / pre > < p > Note that these may in fact be removed in the future, although we have
no present plans to do so (and there doesn't seem to be any immediate
reason to).
< / p > < p > The member function < code class = "code" > operator[]< / code > on a const bitset returns
a bool, and for a non-const bitset returns a < code class = "code" > reference< / code > (a
nested type). No range-checking is done on the index argument, in keeping
with other containers' < code class = "code" > operator[]< / code > requirements.
< / p > < p > Finally, two additional searching functions have been added. They return
the index of the first "on" bit, and the index of the first
"on" bit that is after < code class = "code" > prev< / code > , respectively:
< / p > < pre class = "programlisting" >
size_t _Find_first() const;
size_t _Find_next (size_t prev) const;< / pre > < p > The same caveat given for the _Unchecked_* functions applies here also.
2014-09-21 17:33:12 +00:00
< / 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 >