2
0
mirror of https://github.com/boostorg/sort.git synced 2026-01-19 04:42:11 +00:00

Adding the new boost sort library.

This commit is contained in:
Steven Ross
2015-01-13 21:56:11 -05:00
parent b4b6bd6b1e
commit ef2c4af383
1004 changed files with 133646 additions and 1 deletions

42
Jamfile.v2 Normal file
View File

@@ -0,0 +1,42 @@
# Copyright Steven Ross 2009.
#
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)
# See http://www.boost.org/libs/sort for library home page.
local properties = ;
if --tune in [ modules.peek : ARGV ]
{
properties = <location>. <variant>release ;
}
project spreadsort : source-location example : requirements <include>../.. <include>../../.. $(properties) ;
exe spreadsort : sample.cpp ;
exe alreadysorted : alreadysorted.cpp ;
exe mostlysorted : mostlysorted.cpp ;
exe rightshift : rightshiftsample.cpp ;
exe reverseintsort : reverseintsample.cpp ;
exe int64 : int64.cpp ;
exe floatsort : floatsample.cpp ;
exe shiftfloatsort : shiftfloatsample.cpp ;
exe floatfunctorsort : floatfunctorsample.cpp ;
exe double : double.cpp ;
exe stringsort : stringsample.cpp ;
exe wstringsort : wstringsample.cpp ;
exe reversestringsort : reversestringsample.cpp ;
exe charstringsort : charstringsample.cpp ;
exe stringfunctorsort : stringfunctorsample.cpp ;
exe reversestringfunctorsort : reversestringfunctorsample.cpp ;
exe keyplusdata : keyplusdatasample.cpp ;
exe randomgen : randomgen.cpp ;
exe boostrandomgen : boostrandomgen.cpp ;
exe alrbreaker : alrbreaker.cpp ;
exe binaryalrbreaker : binaryalrbreaker.cpp ;
exe caseinsensitive : caseinsensitive.cpp ;
exe generalizedstruct : generalizedstruct.cpp ;
# benchmarks need to be built with linkflags="-lboost_system -lboost_thread"
#exe parallelint : parallelint.cpp boost_system ;
#exe parallelstring : parallelstring.cpp ;

23
LICENSE_1_0.txt Normal file
View File

@@ -0,0 +1,23 @@
Boost Software License - Version 1.0 - August 17th, 2003
Permission is hereby granted, free of charge, to any person or organization
obtaining a copy of the software and accompanying documentation covered by
this license (the "Software") to use, reproduce, display, distribute,
execute, and transmit the Software, and to prepare derivative works of the
Software, and to permit third-parties to whom the Software is furnished to
do so, all subject to the following:
The copyright notices in the Software and this entire statement, including
the above license grant, this restriction and the following disclaimer,
must be included in all copies of the Software, in whole or in part, and
all derivative works of the Software, unless such copies or derivative
works are solely in the form of machine-executable object code generated by
a source language processor.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

View File

@@ -1 +1,27 @@
# sort
sort
====
Boost Sort library that includes spreadsort, a hybrid radix sort that is faster than O(n*log(n))
Replace "/" with "\" in paths below if you're using Windows.
To install, download boost, run bootstrap, and copy this library into <your boost root>/libs/sort.
Run the unit tests from your boost root:
./b2 libs/sort/test
Then go to <your boost root>/libs/sort and run tune.pl:
Then from the same directory verify correctness and speed on small data sets:
perl tune.pl -small [-windows]
(it needs the windows option to build for windows)
This tests sorting on many different distributions and data types, making sure the results are identical to std::sort and showing a speed comparison that is a weighted average across multiple data distributions.
If you're interested in more accurate speed comparisons, run the same command either without the -small option, or with the -large option instead. This will take substantially longer.
Documentation is available from the index.html in this same directory, including a description of the algorithm, how to use it, and why it's faster.
Finally, if you have an unusual computing system, you may want to use the -tune option to tune.pl, to tune the constants used by the library for your specific system. BEWARE that this will overwrite the default boost/sort/spreadsort/detail/constants.hpp provided by the library. Making a copy first is a good idea. Also note that it doesn't tune MAX_SPLITS, the most important parameter, because that should only be tuned with the -large option and it can overfit to the specific amount of data passed in.
Feel free to contact spreadsort@gmail.com with any questions about this library.
Copyright 2014-2015 Steven Ross
Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

BIN
doc/4_threaded.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

0
doc/AutoDoxywarnings.log Normal file
View File

160
doc/Jamfile.v2 Normal file
View File

@@ -0,0 +1,160 @@
# Spreadsort documentation Jamfile
# Copyright (c) 2014 Steven Ross
#
# Distributed under the Boost Software License,
# Version 1.0. (See accompanying file LICENSE_1_0.txt
# or copy at http://boost.org/LICENSE_1_0.txt)
# Reminder: whitespace MUST terminate variable name!
# so spaces or newlines BEFORE ; and : and AFTER too.
# (because : and ; are keywords!)
import doxygen ;
import quickbook ;
import os ; # Needed to get environment variables.
import modules ;
path-constant here : . ; # convenient to refer to files in the same directory as this jamfile.v2
path-constant boost-images : ../../../doc/src/images ;
path-constant images_location : ./doc ; # location of SVG and PNG images referenced by Quickbook.
# http://docbook.sourceforge.net/release/xsl/1.77.1/doc/html/img.src.path.html
# relative to /doc ?
path-constant parent : .. ; # Beman Dawes - so that inspect.exe will start in boost-root/libs/timer
# when run from another directory, such as boost-root/status
using auto-index ;
using doxygen ; # Required if you want to use Doxygen.
using quickbook ;
using boostbook ;
if --enable-index in [ modules.peek : ARGV ]
{
ECHO "Building the Spreadsort docs with automatic index generation enabled." ;
using auto-index ;
project sort_doc : requirements
<auto-index>on
<auto-index-script>sort.idx
<auto-index-prefix>.
<auto-index-verbose>on
<format>html:<auto-index-internal>on
<format>html:<xsl:param>generate.index=0
<format>pdf:<auto-index-internal>on
<format>pdf:<xsl:param>index.on.type=1
<quickbook-define>enable_index ;
}
else
{
project sort_doc ;
ECHO "Building the Spreadsort docs with automatic index generation disabled. Try building with --enable-index." ;
}
doxygen autodoc
:
[ glob $(here)/../include/boost/sort.hpp ]
[ glob $(here)/../include/boost/sort/spreadsort/*.hpp ]
# [ glob $(here)/../include/boost/sort/detail/spreadsort/*.hpp ] # Hide implementation/detail for now.
# but could also include this and switch Boost.Sort C++ reference info to include implementation/detail or not using Doxygen macro DETAIL.
# See http://www.stack.nl/~dimitri/doxygen/manual/commands.html#cmdcond
# and http://www.stack.nl/~dimitri/doxygen/manual/config.html#cfg_enabled_sections
# by adding this line below with other Doxygen parameters
# <doxygen:param>ENABLED_SECTIONS="DETAIL"
# Or setting this macro value ENABLED_SECTIONS="DETAIL" in /doxygen/sort_doxyfile.txt for Standalone Doxygen documentaation.
# This might be useful for maintainers.
:
<doxygen:param>PROJECT_NAME="Sort"
<doxygen:param>RECURSIVE=NO
<doxygen:param>ENABLE_PREPROCESSING=YES
<doxygen:param>EXPAND_ONLY_PREDEF=YES
<doxygen:param>EXTRACT_ALL=NO
<doxygen:param>EXTRACT_PRIVATE=NO
<doxygen:param>HIDE_UNDOC_MEMBERS=YES
<doxygen:param>MACRO_EXPANSION=YES
<doxygen:param>SORT_MEMBER_DOCS=NO
<doxygen:param>SHOW_INCLUDE_FILES=NO
<doxygen:param>MAX_INITIALIZER_LINES=0
<doxygen:param>VERBATIM_HEADERS=NO
<doxygen:param>WARNINGS=NO # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings for undocumented members.
# If EXTRACT_ALL is set to YES then this flag will automatically be disabled.
<doxygen:param>WARN_IF_UNDOCUMENTED=NO # If WARN_IF_UNDOCUMENTED is set to YES,
# then doxygen will generate warnings for all undocumented members.
<doxygen:param>WARN_IF_DOC_ERROR=YES # If WARN_IF_DOC_ERROR is set to YES, Doxygen will generate warnings for
# potential errors in the documentation.
<doxygen:param>WARN_LOGFILE=AutoDoxywarnings.log # This may not be empty (usually not a good sign!), depending on options chosen.
# Much better to send message to a logfile than the default stderr.
# and make sure that there are no Doxygen errors or significant warnings in the log file.
#<reftitle>"Reference" # Default is "Reference" but helpful to specify library.
<xsl:param>"boost.doxygen.reftitle=Boost.Sort C++ Reference"
# See Doxygen configuration for detailed explanation of these options.
;
xml sort
:
sort.qbk # This is your 'root' Quickbook file (that may include other .qbk files).
;
boostbook standalone
:
sort
:
# http://www.sagehill.net/docbookxsl/SectionNumbering.html
<xsl:param>boost.root=../../../.. # modular-boost
<xsl:param>chapter.autolabel=0 # No Chapter numbering.
<xsl:param>chunk.section.depth=8
<xsl:param>toc.section.depth=8 # How far down sections get TOCs.
<xsl:param>toc.max.depth=4 # Max depth in each TOC.
<xsl:param>generate.section.toc.level=1
# PDF Options:
# TOC Generation: this is needed for FOP-0.9 and later:
<xsl:param>fop1.extensions=0
<xsl:param>xep.extensions=1
# TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9!
<xsl:param>fop.extensions=1
# No indent on body text:
<xsl:param>body.start.indent=0pt
# Margin size:
<xsl:param>page.margin.inner=0.5in
# Margin size:
<xsl:param>page.margin.outer=0.5in
# Paper type = A4
<xsl:param>paper.type=A4
# Yes, we want graphics for admonishments:
<xsl:param>admon.graphics=1
#<format>html:<xsl:param>img.src.path=$(images_location)/
# Default works for html, need ./doc for PDF
# Set this one for PDF generation *only*:
# default png graphics are awful in PDF form,
# better use SVGs instead, if available:
<format>pdf:<xsl:param>img.src.path=$(images_location)/
<format>pdf:<xsl:param>admon.graphics.extension=".svg"
<format>pdf:<xsl:param>admon.graphics.path=$(boost-images)/
<dependency>autodoc #
;
install pdfinstall
: standalone
: <location>. <install-type>PDF <name>sort.pdf
;
explicit css ;
explicit images ;
# This will run the inspect tool automatically from the doc folder
# but sadly seems to build the tool each time so is very slow.
# Also it produces lots of output from the original docs.
# So not very useful yet.
# Run inspect tool.
# run /boost/tools/inspect//inspect/<variant>release
# : $(parent) -text -brief # command line
# : # input files
# : <dependency>/boost/filesystem//boost_filesystem
# <test-info>always_show_run_output # requirements
# : inspect # test name
# ;

69
doc/acknowledgments.html Normal file
View File

@@ -0,0 +1,69 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<link rel="stylesheet" type="text/css" href="../../../boost.css">
<title>Boost Sort library - Acknowledgments</title>
</head>
<body link="#0000FF" vlink="#800080">
<table border="0" cellpadding="7" cellspacing="0" width="100%" summary=
"header">
<tr>
<td valign="top" width="300">
<h3><a href="../../../index.htm"><img height="86" width="277" alt=
"C++ Boost" src="../../../boost.png" border="0"></a></h3>
</td>
<td valign="top">
<h1 align="center">Boost Sort library</h1>
<h2 align="center">Acknowledgments</h2>
</td>
</tr>
</table>
<div class="spirit-nav">
<a accesskey="p" href="faq.html"><img src="../../../doc/html/images/prev.png" alt="Prev"/></a>
<a accesskey="u" href="index.html"><img src="../../../doc/html/images/up.png" alt="Up"/></a>
<a accesskey="h" href="index.html"><img src="../../../doc/html/images/home.png" alt="Home"/></a>
<a accesskey="n" href="bibliography.html"><img src="../../../doc/html/images/next.png" alt="Next"/></a>
</div>
<hr/>
<p>The author would like to thank his wife Mary for her patience and support during the long
process of converting this from a piece of C code to a template library.</p>
<p>The author would also like to thank Phil Endecott and Frank Gennari
for the improvements they've suggested and for testing.
Without them this would have taken longer to develop or performed worse.
</p><p>float_mem_cast was fixed to be safe and fast thanks to Scott McMurray.
That fix was critical for a high-performance cross-platform float_sort.
</p><p>Thanks also for multiple helpful suggestions provided by Steven Watanabe, Edouard Alligand,
and others.</p>
<hr/>
<div class="spirit-nav">
<a accesskey="p" href="faq.html"><img src="../../../doc/html/images/prev.png" alt="Prev"/></a>
<a accesskey="u" href="index.html"><img src="../../../doc/html/images/up.png" alt="Up"/></a>
<a accesskey="h" href="index.html"><img src="../../../doc/html/images/home.png" alt="Home"/></a>
<a accesskey="n" href="bibliography.html"><img src="../../../doc/html/images/next.png" alt="Next"/></a>
</div>
<p><a href="http://validator.w3.org/check?uri=referer"><img border="0" src=
"http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01 Transitional"
height="31" width="88"></a></p>
<p>Revised
<!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->04
December, 2006<!--webbot bot="Timestamp" endspan i-checksum="38514" --></p>
<p><i>Copyright &copy; 2009 <a href=
"mailto:spreadsort@gmail.com">Steven Ross</a></i></p>
<p><i>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href=
"http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</a>)</i></p>
</body>
</html>

400
doc/autodoc.xml Normal file
View File

@@ -0,0 +1,400 @@
<?xml version="1.0" standalone="yes"?>
<library-reference id="boost_sort_c___reference"><title>Boost.Sort C++ Reference</title><header name="boost/sort/spreadsort/float_sort.hpp">
<namespace name="boost">
<namespace name="sort">
<function name="float_mem_cast"><type>Cast_type</type><template>
<template-type-parameter name="Data_type"><purpose><para>Floating-point IEEE 754/IEC559 type. </para></purpose></template-type-parameter>
<template-type-parameter name="Cast_type"><purpose><para>Integer type (same size) to which to cast.</para></purpose></template-type-parameter>
</template><parameter name="data"><paramtype>const Data_type &amp;</paramtype></parameter><purpose>Casts a float to the specified integer type. </purpose><description><para>
<formalpara><title>Example:</title><para><programlisting language="c++">struct rightshift {
int operator()(const DATA_TYPE &amp;x, const unsigned offset) const {
return float_mem_cast&lt;KEY_TYPE, CAST_TYPE&gt;(x.key) &gt;&gt; offset;
}
};
</programlisting> </para></formalpara>
</para></description></function>
<function name="float_sort"><type>void</type><template>
<template-type-parameter name="RandomAccessIter"><purpose><para><ulink url="http://www.cplusplus.com/reference/iterator/RandomAccessIterator/">Random access iterator</ulink></para></purpose></template-type-parameter>
</template><parameter name="first"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointer to first element. </para></description></parameter><parameter name="last"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointing to one beyond the end of data.</para></description></parameter><purpose><computeroutput>float_sort</computeroutput> with casting to the appropriate size. </purpose><description><para>
Some performance plots of runtime vs. n and log(range) are provided:<sbr/>
<ulink url="../../doc/graph/windows_float_sort.htm">windows_float_sort</ulink> <sbr/>
<ulink url="../../doc/graph/osx_float_sort.htm">osx_float_sort</ulink></para><para><formalpara><title>A simple example of sorting some floating-point is:</title><para><programlisting language="c++">vector&lt;float&gt; vec;
vec.push_back(1.0);
vec.push_back(2.3);
vec.push_back(1.3);
spreadsort(vec.begin(), vec.end());
</programlisting> </para></formalpara>
<formalpara><title>The sorted vector contains ascending values "1.0 1.3 2.3".</title><para/></formalpara>
</para></description></function>
<function name="float_sort"><type>void</type><template>
<template-type-parameter name="RandomAccessIter"><purpose><para><ulink url="http://www.cplusplus.com/reference/iterator/RandomAccessIterator/">Random access iterator</ulink> </para></purpose></template-type-parameter>
<template-type-parameter name="Right_shift"><purpose><para>Functor for right-shift by parameter <computeroutput>shift</computeroutput> bits.</para></purpose></template-type-parameter>
</template><parameter name="first"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointer to first element. </para></description></parameter><parameter name="last"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointing to one beyond the end of data. </para></description></parameter><parameter name="rshift"><paramtype>Right_shift</paramtype><description><para>Number of bits to right-shift (using functor). </para></description></parameter><purpose>Floating-point sort algorithm using random access iterators with just right-shift functor. </purpose><description><para>
</para></description></function>
<function name="float_sort"><type>void</type><template>
<template-type-parameter name="RandomAccessIter"><purpose><para><ulink url="http://www.cplusplus.com/reference/iterator/RandomAccessIterator/">Random access iterator</ulink> </para></purpose></template-type-parameter>
<template-type-parameter name="Right_shift"><purpose><para>functor for right-shift by parameter <computeroutput>shift</computeroutput> bits. </para></purpose></template-type-parameter>
<template-type-parameter name="Compare"/>
</template><parameter name="first"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointer to first element. </para></description></parameter><parameter name="last"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointing to one beyond the end of data. </para></description></parameter><parameter name="rshift"><paramtype>Right_shift</paramtype><description><para>Number of bits to right-shift (using functor). </para></description></parameter><parameter name="comp"><paramtype>Compare</paramtype><description><para>comparison functor. </para></description></parameter><purpose>Float sort algorithm using random access iterators with both right-shift and user-defined comparison operator. </purpose><description><para>
</para></description></function>
</namespace>
</namespace>
</header>
<header name="boost/sort/spreadsort/integer_sort.hpp">
<namespace name="boost">
<namespace name="sort">
<function name="integer_sort"><type>void</type><template>
<template-type-parameter name="RandomAccessIter"><purpose><para><ulink url="http://www.cplusplus.com/reference/iterator/RandomAccessIterator/">Random access iterator</ulink> </para></purpose></template-type-parameter>
</template><parameter name="first"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointer to first element. </para></description></parameter><parameter name="last"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointing to one beyond the end of data.</para></description></parameter><purpose>Integer sort algorithm using random access iterators. (All variants fall back to <computeroutput>std::sort</computeroutput> if the data size is too small, &lt; <computeroutput>detail::min_sort_size</computeroutput>). </purpose><description><para><computeroutput>integer_sort</computeroutput> is a fast templated in-place hybrid radix/comparison algorithm, which in testing tends to be roughly 50% to 2X faster than <computeroutput>std::sort</computeroutput> for large tests (&gt;=100kB).<sbr/>
Worst-case performance is <emphasis> O(N * (lg(range)/s + s)) </emphasis>, so <computeroutput>integer_sort</computeroutput> is asymptotically faster than pure comparison-based algorithms. <computeroutput>s</computeroutput> is <computeroutput>max_splits</computeroutput>, which defaults to 11, so its worst-case with default settings for 32-bit integers is <emphasis> O(N * ((32/11) </emphasis> slow radix-based iterations fast comparison-based iterations).<sbr/>
<sbr/>
Some performance plots of runtime vs. n and log(range) are provided:<sbr/>
<ulink url="../../doc/graph/windows_integer_sort.htm">windows_integer_sort</ulink> <sbr/>
<ulink url="../../doc/graph/osx_integer_sort.htm">osx_integer_sort</ulink></para><para>
<warning><para>Throwing an exception may cause data loss. This will also throw if a small vector resize throws, in which case there will be no data loss. </para></warning>
<warning><para>Invalid arguments cause undefined behaviour. </para></warning>
<note><para><computeroutput>spreadsort</computeroutput> function provides a wrapper that calls the fastest sorting algorithm available for a data type, enabling faster generic-programming.</para></note>
<para>The lesser of <emphasis> O(N*log(N)) </emphasis> comparisons and <emphasis> O(N*log(K/S + S)) </emphasis>operations worst-case, where: </para>
<para>* N is <computeroutput>last</computeroutput> - <computeroutput>first</computeroutput>, </para>
<para>* K is the log of the range in bits (32 for 32-bit integers using their full range), </para>
<para>* S is a constant called max_splits, defaulting to 11 (except for strings where it is the log of the character size). </para>
</para></description><requires><para>[<computeroutput>first</computeroutput>, <computeroutput>last</computeroutput>) is a valid range. </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> is mutable. </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> is <ulink url="http://en.cppreference.com/w/cpp/concept/LessThanComparable">LessThanComparable</ulink> </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> supports the <computeroutput>operator&gt;&gt;</computeroutput>, which returns an integer-type right-shifted a specified number of bits. </para></requires><postconditions><para>The elements in the range [<computeroutput>first</computeroutput>, <computeroutput>last</computeroutput>) are sorted in ascending order.</para></postconditions><throws><simpara><classname>std::exception</classname> Propagates exceptions if any of the element comparisons, the element swaps (or moves), the right shift, subtraction of right-shifted elements, functors, or any operations on iterators throw.</simpara></throws></function>
<function name="integer_sort"><type>void</type><template>
<template-type-parameter name="RandomAccessIter"><purpose><para><ulink url="http://www.cplusplus.com/reference/iterator/RandomAccessIterator/">Random access iterator</ulink> </para></purpose></template-type-parameter>
<template-type-parameter name="Right_shift"><purpose><para>functor for right-shift by parameter <computeroutput>shift</computeroutput> bits. </para></purpose></template-type-parameter>
<template-type-parameter name="Compare"/>
</template><parameter name="first"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointer to first element. </para></description></parameter><parameter name="last"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointing to one beyond the end of data. </para></description></parameter><parameter name="shift"><paramtype>Right_shift</paramtype><description><para>Number of bits to right-shift (using functor). </para></description></parameter><parameter name="comp"><paramtype>Compare</paramtype><description><para>comparison functor.</para></description></parameter><purpose>Integer sort algorithm using random access iterators with both right-shift and user-defined comparison operator. (All variants fall back to <computeroutput>std::sort</computeroutput> if the data size is too small, &lt; <computeroutput>detail::min_sort_size</computeroutput>). </purpose><description><para><computeroutput>integer_sort</computeroutput> is a fast templated in-place hybrid radix/comparison algorithm, which in testing tends to be roughly 50% to 2X faster than <computeroutput>std::sort</computeroutput> for large tests (&gt;=100kB).<sbr/>
Worst-case performance is <emphasis> O(N * (lg(range)/s + s)) </emphasis>, so <computeroutput>integer_sort</computeroutput> is asymptotically faster than pure comparison-based algorithms. <computeroutput>s</computeroutput> is <computeroutput>max_splits</computeroutput>, which defaults to 11, so its worst-case with default settings for 32-bit integers is <emphasis> O(N * ((32/11) </emphasis> slow radix-based iterations fast comparison-based iterations).<sbr/>
<sbr/>
Some performance plots of runtime vs. n and log(range) are provided:<sbr/>
<ulink url="../../doc/graph/windows_integer_sort.htm">windows_integer_sort</ulink> <sbr/>
<ulink url="../../doc/graph/osx_integer_sort.htm">osx_integer_sort</ulink></para><para>
<warning><para>Throwing an exception may cause data loss. This will also throw if a small vector resize throws, in which case there will be no data loss. </para></warning>
<warning><para>Invalid arguments cause undefined behaviour. </para></warning>
<note><para><computeroutput>spreadsort</computeroutput> function provides a wrapper that calls the fastest sorting algorithm available for a data type, enabling faster generic-programming.</para></note>
<para>The lesser of <emphasis> O(N*log(N)) </emphasis> comparisons and <emphasis> O(N*log(K/S + S)) </emphasis>operations worst-case, where: </para>
<para>* N is <computeroutput>last</computeroutput> - <computeroutput>first</computeroutput>, </para>
<para>* K is the log of the range in bits (32 for 32-bit integers using their full range), </para>
<para>* S is a constant called max_splits, defaulting to 11 (except for strings where it is the log of the character size). </para>
</para></description><requires><para>[<computeroutput>first</computeroutput>, <computeroutput>last</computeroutput>) is a valid range. </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> is mutable. </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> is <ulink url="http://en.cppreference.com/w/cpp/concept/LessThanComparable">LessThanComparable</ulink> </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> supports the <computeroutput>operator&gt;&gt;</computeroutput>, which returns an integer-type right-shifted a specified number of bits. </para></requires><postconditions><para>The elements in the range [<computeroutput>first</computeroutput>, <computeroutput>last</computeroutput>) are sorted in ascending order.</para></postconditions><returns><para><computeroutput>void</computeroutput>.</para></returns><throws><simpara><classname>std::exception</classname> Propagates exceptions if any of the element comparisons, the element swaps (or moves), the right shift, subtraction of right-shifted elements, functors, or any operations on iterators throw.</simpara></throws></function>
<function name="integer_sort"><type>void</type><template>
<template-type-parameter name="RandomAccessIter"><purpose><para><ulink url="http://www.cplusplus.com/reference/iterator/RandomAccessIterator/">Random access iterator</ulink> </para></purpose></template-type-parameter>
<template-type-parameter name="Right_shift"><purpose><para>functor for right-shift by parameter <computeroutput>shift</computeroutput> bits.</para></purpose></template-type-parameter>
</template><parameter name="first"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointer to first element. </para></description></parameter><parameter name="last"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointing to one beyond the end of data. </para></description></parameter><parameter name="shift"><paramtype>Right_shift</paramtype><description><para>Number of bits to right-shift (using functor).</para></description></parameter><purpose>Integer sort algorithm using random access iterators with just right-shift functor. (All variants fall back to <computeroutput>std::sort</computeroutput> if the data size is too small, &lt; <computeroutput>detail::min_sort_size</computeroutput>). </purpose><description><para><computeroutput>integer_sort</computeroutput> is a fast templated in-place hybrid radix/comparison algorithm, which in testing tends to be roughly 50% to 2X faster than <computeroutput>std::sort</computeroutput> for large tests (&gt;=100kB).<sbr/>
<formalpara><title>Performance:</title><para>Worst-case performance is <emphasis> O(N * (lg(range)/s + s)) </emphasis>, so <computeroutput>integer_sort</computeroutput> is asymptotically faster than pure comparison-based algorithms. <computeroutput>s</computeroutput> is <computeroutput>max_splits</computeroutput>, which defaults to 11, so its worst-case with default settings for 32-bit integers is <emphasis> O(N * ((32/11) </emphasis> slow radix-based iterations fast comparison-based iterations).<sbr/>
<sbr/>
Some performance plots of runtime vs. n and log(range) are provided:<sbr/>
<ulink url="../../doc/graph/windows_integer_sort.htm">windows_integer_sort</ulink><sbr/>
<ulink url="../../doc/graph/osx_integer_sort.htm">osx_integer_sort</ulink></para></formalpara>
<warning><para>Throwing an exception may cause data loss. This will also throw if a small vector resize throws, in which case there will be no data loss. </para></warning>
<warning><para>Invalid arguments cause undefined behaviour. </para></warning>
<note><para><computeroutput>spreadsort</computeroutput> function provides a wrapper that calls the fastest sorting algorithm available for a data type, enabling faster generic-programming.</para></note>
<para>The lesser of <emphasis> O(N*log(N)) </emphasis> comparisons and <emphasis> O(N*log(K/S + S)) </emphasis>operations worst-case, where: </para>
<para>* N is <computeroutput>last</computeroutput> - <computeroutput>first</computeroutput>, </para>
<para>* K is the log of the range in bits (32 for 32-bit integers using their full range), </para>
<para>* S is a constant called max_splits, defaulting to 11 (except for strings where it is the log of the character size). </para>
</para></description><requires><para>[<computeroutput>first</computeroutput>, <computeroutput>last</computeroutput>) is a valid range. </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> is mutable. </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> is <ulink url="http://en.cppreference.com/w/cpp/concept/LessThanComparable">LessThanComparable</ulink> </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> supports the <computeroutput>operator&gt;&gt;</computeroutput>, which returns an integer-type right-shifted a specified number of bits. </para></requires><postconditions><para>The elements in the range [<computeroutput>first</computeroutput>, <computeroutput>last</computeroutput>) are sorted in ascending order.</para></postconditions><throws><simpara><classname>std::exception</classname> Propagates exceptions if any of the element comparisons, the element swaps (or moves), the right shift, subtraction of right-shifted elements, functors, or any operations on iterators throw.</simpara></throws></function>
</namespace>
</namespace>
</header>
<header name="boost/sort/spreadsort/spreadsort.hpp">
<namespace name="boost">
<namespace name="sort">
<function name="spreadsort"><type>boost::enable_if_c&lt; std::numeric_limits&lt; typename std::iterator_traits&lt; RandomAccessIter &gt;::value_type &gt;::is_integer, void &gt;::type</type><template>
<template-type-parameter name="RandomAccessIter"><purpose><para><ulink url="http://www.cplusplus.com/reference/iterator/RandomAccessIterator/">Random access iterator</ulink> </para></purpose></template-type-parameter>
</template><parameter name="first"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointer to first element. </para></description></parameter><parameter name="last"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointing to one beyond the end of data.</para></description></parameter><purpose>Generic <computeroutput>spreadsort</computeroutput> variant detecting integer-type elements so call to <computeroutput>integer_sort</computeroutput>. </purpose><description><para>If the data type provided is an integer, <computeroutput>integer_sort</computeroutput> is used. <note><para>Sorting other data types requires picking between <computeroutput>integer_sort</computeroutput>, <computeroutput>float_sort</computeroutput> and <computeroutput>string_sort</computeroutput> directly, as <computeroutput>spreadsort</computeroutput> won't accept types that don't have the appropriate <computeroutput>type_traits</computeroutput>. </para></note>
</para></description><requires><para>[<computeroutput>first</computeroutput>, <computeroutput>last</computeroutput>) is a valid range. </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> is mutable. </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> is <ulink url="http://en.cppreference.com/w/cpp/concept/LessThanComparable">LessThanComparable</ulink> </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> supports the <computeroutput>operator&gt;&gt;</computeroutput>, which returns an integer-type right-shifted a specified number of bits. </para></requires><postconditions><para>The elements in the range [<computeroutput>first</computeroutput>, <computeroutput>last</computeroutput>) are sorted in ascending order. </para></postconditions></function>
<function name="spreadsort"><type>boost::enable_if_c&lt; !std::numeric_limits&lt; typename std::iterator_traits&lt; RandomAccessIter &gt;::value_type &gt;::is_integer &amp;&amp;std::numeric_limits&lt; typename std::iterator_traits&lt; RandomAccessIter &gt;::value_type &gt;::is_iec559, void &gt;::type</type><template>
<template-type-parameter name="RandomAccessIter"><purpose><para><ulink url="http://www.cplusplus.com/reference/iterator/RandomAccessIterator/">Random access iterator</ulink> </para></purpose></template-type-parameter>
</template><parameter name="first"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointer to first element. </para></description></parameter><parameter name="last"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointing to one beyond the end of data.</para></description></parameter><purpose>Generic <computeroutput>spreadsort</computeroutput> variant detecting float element type so call to <computeroutput>float_sort</computeroutput>. </purpose><description><para>If the data type provided is a float or castable-float, <computeroutput>float_sort</computeroutput> is used. <note><para>Sorting other data types requires picking between <computeroutput>integer_sort</computeroutput>, <computeroutput>float_sort</computeroutput> and <computeroutput>string_sort</computeroutput> directly, as <computeroutput>spreadsort</computeroutput> won't accept types that don't have the appropriate <computeroutput>type_traits</computeroutput>.</para></note>
</para></description><requires><para>[<computeroutput>first</computeroutput>, <computeroutput>last</computeroutput>) is a valid range. </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> is mutable. </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> is <ulink url="http://en.cppreference.com/w/cpp/concept/LessThanComparable">LessThanComparable</ulink> </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> supports the <computeroutput>operator&gt;&gt;</computeroutput>, which returns an integer-type right-shifted a specified number of bits. </para></requires><postconditions><para>The elements in the range [<computeroutput>first</computeroutput>, <computeroutput>last</computeroutput>) are sorted in ascending order. </para></postconditions></function>
<function name="spreadsort"><type>boost::enable_if_c&lt; is_same&lt; typename std::iterator_traits&lt; RandomAccessIter &gt;::value_type, typename std::string &gt;::value||is_same&lt; typename std::iterator_traits&lt; RandomAccessIter &gt;::value_type, typename std::wstring &gt;::value, void &gt;::type</type><template>
<template-type-parameter name="RandomAccessIter"><purpose><para><ulink url="http://www.cplusplus.com/reference/iterator/RandomAccessIterator/">Random access iterator</ulink> </para></purpose></template-type-parameter>
</template><parameter name="first"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointer to first element. </para></description></parameter><parameter name="last"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointing to one beyond the end of data.</para></description></parameter><purpose>Generic <computeroutput>spreadsort</computeroutput> variant detecting string element type so call to <computeroutput>string_sort</computeroutput> for <computeroutput>std::strings</computeroutput> and <computeroutput>std::wstrings</computeroutput>. </purpose><description><para>If the data type provided is a string or wstring, <computeroutput>string_sort</computeroutput> is used. <note><para>Sorting other data types requires picking between <computeroutput>integer_sort</computeroutput>, <computeroutput>float_sort</computeroutput> and <computeroutput>string_sort</computeroutput> directly, as <computeroutput>spreadsort</computeroutput> won't accept types that don't have the appropriate <computeroutput>type_traits</computeroutput>.</para></note>
</para></description><requires><para>[<computeroutput>first</computeroutput>, <computeroutput>last</computeroutput>) is a valid range. </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> is mutable. </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> is <ulink url="http://en.cppreference.com/w/cpp/concept/LessThanComparable">LessThanComparable</ulink> </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> supports the <computeroutput>operator&gt;&gt;</computeroutput>, which returns an integer-type right-shifted a specified number of bits. </para></requires><postconditions><para>The elements in the range [<computeroutput>first</computeroutput>, <computeroutput>last</computeroutput>) are sorted in ascending order. </para></postconditions></function>
</namespace>
</namespace>
</header>
<header name="boost/sort/spreadsort/string_sort.hpp">
<namespace name="boost">
<namespace name="sort">
<function name="string_sort"><type>void</type><template>
<template-type-parameter name="RandomAccessIter"><purpose><para><ulink url="http://www.cplusplus.com/reference/iterator/RandomAccessIterator/">Random access iterator</ulink> </para></purpose></template-type-parameter>
<template-type-parameter name="Unsigned_char_type"><purpose><para>Unsigned character type used for string. </para></purpose></template-type-parameter>
</template><parameter name="first"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointer to first element. </para></description></parameter><parameter name="last"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointing to one beyond the end of data. </para></description></parameter><parameter name="unused"><paramtype>Unsigned_char_type</paramtype><description><para>Unused ???</para></description></parameter><purpose>String sort algorithm using random access iterators, allowing character-type overloads.<sbr/>
(All variants fall back to <computeroutput>std::sort</computeroutput> if the data size is too small, &lt; <computeroutput>detail::min_sort_size</computeroutput>). </purpose><description><para><computeroutput>string_sort</computeroutput> is a fast templated in-place hybrid radix/comparison algorithm, which in testing tends to be roughly 50% to 2X faster than <computeroutput>std::sort</computeroutput> for large tests (&gt;=100kB).<sbr/>
<formalpara><title/><para>Worst-case performance is <emphasis> O(N * (lg(range)/s + s)) </emphasis>, so <computeroutput>integer_sort</computeroutput> is asymptotically faster than pure comparison-based algorithms. <computeroutput>s</computeroutput> is <computeroutput>max_splits</computeroutput>, which defaults to 11, so its worst-case with default settings for 32-bit integers is <emphasis> O(N * ((32/11) </emphasis> slow radix-based iterations fast comparison-based iterations).<sbr/>
<sbr/>
Some performance plots of runtime vs. n and log(range) are provided:<sbr/>
<ulink url="../../doc/graph/windows_string_sort.htm">windows_string_sort</ulink><sbr/>
<ulink url="../../doc/graph/osx_string_sort.htm">osx_string_sort</ulink></para></formalpara>
<warning><para>Throwing an exception may cause data loss. This will also throw if a small vector resize throws, in which case there will be no data loss. </para></warning>
<warning><para>Invalid arguments cause undefined behaviour. </para></warning>
<note><para><computeroutput>spreadsort</computeroutput> function provides a wrapper that calls the fastest sorting algorithm available for a data type, enabling faster generic-programming.</para></note>
<para>The lesser of <emphasis> O(N*log(N)) </emphasis> comparisons and <emphasis> O(N*log(K/S + S)) </emphasis>operations worst-case, where: </para>
<para>* N is <computeroutput>last</computeroutput> - <computeroutput>first</computeroutput>, </para>
<para>* K is the log of the range in bits (32 for 32-bit integers using their full range), </para>
<para>* S is a constant called max_splits, defaulting to 11 (except for strings where it is the log of the character size). </para>
</para></description><requires><para>[<computeroutput>first</computeroutput>, <computeroutput>last</computeroutput>) is a valid range. </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> is mutable. </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> is <ulink url="http://en.cppreference.com/w/cpp/concept/LessThanComparable">LessThanComparable</ulink> </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> supports the <computeroutput>operator&gt;&gt;</computeroutput>, which returns an integer-type right-shifted a specified number of bits. </para></requires><postconditions><para>The elements in the range [<computeroutput>first</computeroutput>, <computeroutput>last</computeroutput>) are sorted in ascending order.</para></postconditions><throws><simpara><classname>std::exception</classname> Propagates exceptions if any of the element comparisons, the element swaps (or moves), the right shift, subtraction of right-shifted elements, functors, or any operations on iterators throw.</simpara></throws></function>
<function name="string_sort"><type>void</type><template>
<template-type-parameter name="RandomAccessIter"><purpose><para><ulink url="http://www.cplusplus.com/reference/iterator/RandomAccessIterator/">Random access iterator</ulink> </para></purpose></template-type-parameter>
</template><parameter name="first"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointer to first element. </para></description></parameter><parameter name="last"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointing to one beyond the end of data.</para></description></parameter><purpose>String sort algorithm using random access iterators, wraps using default of unsigned char. (All variants fall back to <computeroutput>std::sort</computeroutput> if the data size is too small, &lt; <computeroutput>detail::min_sort_size</computeroutput>). </purpose><description><para><computeroutput>string_sort</computeroutput> is a fast templated in-place hybrid radix/comparison algorithm, which in testing tends to be roughly 50% to 2X faster than <computeroutput>std::sort</computeroutput> for large tests (&gt;=100kB).<sbr/>
Worst-case performance is <emphasis> O(N * (lg(range)/s + s)) </emphasis>, so <computeroutput>integer_sort</computeroutput> is asymptotically faster than pure comparison-based algorithms. <computeroutput>s</computeroutput> is <computeroutput>max_splits</computeroutput>, which defaults to 11, so its worst-case with default settings for 32-bit integers is <emphasis> O(N * ((32/11) </emphasis> slow radix-based iterations fast comparison-based iterations).<sbr/>
<sbr/>
Some performance plots of runtime vs. n and log(range) are provided:<sbr/>
<ulink url="../../doc/graph/windows_string_sort.htm">windows_string_sort</ulink> <sbr/>
<ulink url="../../doc/graph/osx_string_sort.htm">osx_string_sort</ulink></para><para>
<warning><para>Throwing an exception may cause data loss. This will also throw if a small vector resize throws, in which case there will be no data loss. </para></warning>
<warning><para>Invalid arguments cause undefined behaviour. </para></warning>
<note><para><computeroutput>spreadsort</computeroutput> function provides a wrapper that calls the fastest sorting algorithm available for a data type, enabling faster generic-programming.</para></note>
<para>The lesser of <emphasis> O(N*log(N)) </emphasis> comparisons and <emphasis> O(N*log(K/S + S)) </emphasis>operations worst-case, where: </para>
<para>* N is <computeroutput>last</computeroutput> - <computeroutput>first</computeroutput>, </para>
<para>* K is the log of the range in bits (32 for 32-bit integers using their full range), </para>
<para>* S is a constant called max_splits, defaulting to 11 (except for strings where it is the log of the character size). </para>
</para></description><requires><para>[<computeroutput>first</computeroutput>, <computeroutput>last</computeroutput>) is a valid range. </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> is mutable. </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> is <ulink url="http://en.cppreference.com/w/cpp/concept/LessThanComparable">LessThanComparable</ulink> </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> supports the <computeroutput>operator&gt;&gt;</computeroutput>, which returns an integer-type right-shifted a specified number of bits. </para></requires><postconditions><para>The elements in the range [<computeroutput>first</computeroutput>, <computeroutput>last</computeroutput>) are sorted in ascending order.</para></postconditions><throws><simpara><classname>std::exception</classname> Propagates exceptions if any of the element comparisons, the element swaps (or moves), the right shift, subtraction of right-shifted elements, functors, or any operations on iterators throw.</simpara></throws></function>
<function name="reverse_string_sort"><type>void</type><template>
<template-type-parameter name="RandomAccessIter"><purpose><para><ulink url="http://www.cplusplus.com/reference/iterator/RandomAccessIterator/">Random access iterator</ulink> </para></purpose></template-type-parameter>
<template-type-parameter name="Compare"/>
<template-type-parameter name="Unsigned_char_type"><purpose><para>Unsigned character type used for string.</para></purpose></template-type-parameter>
</template><parameter name="first"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointer to first element. </para></description></parameter><parameter name="last"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointing to one beyond the end of data. </para></description></parameter><parameter name="comp"><paramtype>Compare</paramtype><description><para>comparison functor. </para></description></parameter><parameter name="unused"><paramtype>Unsigned_char_type</paramtype><description><para>Unused ???</para></description></parameter><purpose>String sort algorithm using random access iterators, allowing character-type overloads. </purpose><description><para>(All variants fall back to <computeroutput>std::sort</computeroutput> if the data size is too small, &lt; detail::min_sort_size).</para><para><computeroutput>integer_sort</computeroutput> is a fast templated in-place hybrid radix/comparison algorithm, which in testing tends to be roughly 50% to 2X faster than <computeroutput>std::sort</computeroutput> for large tests (&gt;=100kB).<sbr/>
Worst-case performance is <emphasis> O(N * (lg(range)/s + s)) </emphasis>, so <computeroutput>integer_sort</computeroutput> is asymptotically faster than pure comparison-based algorithms. <computeroutput>s</computeroutput> is <computeroutput>max_splits</computeroutput>, which defaults to 11, so its worst-case with default settings for 32-bit integers is <emphasis> O(N * ((32/11) </emphasis> slow radix-based iterations fast comparison-based iterations).<sbr/>
<sbr/>
Some performance plots of runtime vs. n and log(range) are provided:<sbr/>
<ulink url="../../doc/graph/windows_integer_sort.htm">windows_integer_sort</ulink> <sbr/>
<ulink url="../../doc/graph/osx_integer_sort.htm">osx_integer_sort</ulink></para><para>
<warning><para>Throwing an exception may cause data loss. This will also throw if a small vector resize throws, in which case there will be no data loss. </para></warning>
<warning><para>Invalid arguments cause undefined behaviour. </para></warning>
<note><para><computeroutput>spreadsort</computeroutput> function provides a wrapper that calls the fastest sorting algorithm available for a data type, enabling faster generic-programming.</para></note>
<para>The lesser of <emphasis> O(N*log(N)) </emphasis> comparisons and <emphasis> O(N*log(K/S + S)) </emphasis>operations worst-case, where: </para>
<para>* N is <computeroutput>last</computeroutput> - <computeroutput>first</computeroutput>, </para>
<para>* K is the log of the range in bits (32 for 32-bit integers using their full range), </para>
<para>* S is a constant called max_splits, defaulting to 11 (except for strings where it is the log of the character size). </para>
</para></description><requires><para>[<computeroutput>first</computeroutput>, <computeroutput>last</computeroutput>) is a valid range. </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> is mutable. </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> is <ulink url="http://en.cppreference.com/w/cpp/concept/LessThanComparable">LessThanComparable</ulink> </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> supports the <computeroutput>operator&gt;&gt;</computeroutput>, which returns an integer-type right-shifted a specified number of bits. </para></requires><postconditions><para>The elements in the range [<computeroutput>first</computeroutput>, <computeroutput>last</computeroutput>) are sorted in ascending order.</para></postconditions><returns><para><computeroutput>void</computeroutput>.</para></returns><throws><simpara><classname>std::exception</classname> Propagates exceptions if any of the element comparisons, the element swaps (or moves), the right shift, subtraction of right-shifted elements, functors, or any operations on iterators throw.</simpara></throws></function>
<function name="reverse_string_sort"><type>void</type><template>
<template-type-parameter name="RandomAccessIter"><purpose><para><ulink url="http://www.cplusplus.com/reference/iterator/RandomAccessIterator/">Random access iterator</ulink> </para></purpose></template-type-parameter>
<template-type-parameter name="Compare"/>
</template><parameter name="first"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointer to first element. </para></description></parameter><parameter name="last"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointing to one beyond the end of data. </para></description></parameter><parameter name="comp"><paramtype>Compare</paramtype><description><para>Comparison functor.</para></description></parameter><purpose>String sort algorithm using random access iterators, wraps using default of <computeroutput>unsigned</computeroutput> char. </purpose><description><para>(All variants fall back to <computeroutput>std::sort</computeroutput> if the data size is too small, &lt; <computeroutput>detail::min_sort_size</computeroutput>).</para><para><computeroutput>integer_sort</computeroutput> is a fast templated in-place hybrid radix/comparison algorithm, which in testing tends to be roughly 50% to 2X faster than <computeroutput>std::sort</computeroutput> for large tests (&gt;=100kB).<sbr/>
Worst-case performance is <emphasis> O(N * (lg(range)/s + s)) </emphasis>, so <computeroutput>integer_sort</computeroutput> is asymptotically faster than pure comparison-based algorithms. <computeroutput>s</computeroutput> is <computeroutput>max_splits</computeroutput>, which defaults to 11, so its worst-case with default settings for 32-bit integers is <emphasis> O(N * ((32/11) </emphasis> slow radix-based iterations fast comparison-based iterations).<sbr/>
<sbr/>
Some performance plots of runtime vs. n and log(range) are provided:<sbr/>
<ulink url="../../doc/graph/windows_integer_sort.htm">windows_integer_sort</ulink> <sbr/>
<ulink url="../../doc/graph/osx_integer_sort.htm">osx_integer_sort</ulink></para><para>
<warning><para>Throwing an exception may cause data loss. This will also throw if a small vector resize throws, in which case there will be no data loss. </para></warning>
<warning><para>Invalid arguments cause undefined behaviour. </para></warning>
<note><para><computeroutput>spreadsort</computeroutput> function provides a wrapper that calls the fastest sorting algorithm available for a data type, enabling faster generic-programming.</para></note>
<para>The lesser of <emphasis> O(N*log(N)) </emphasis> comparisons and <emphasis> O(N*log(K/S + S)) </emphasis>operations worst-case, where: </para>
<para>* N is <computeroutput>last</computeroutput> - <computeroutput>first</computeroutput>, </para>
<para>* K is the log of the range in bits (32 for 32-bit integers using their full range), </para>
<para>* S is a constant called max_splits, defaulting to 11 (except for strings where it is the log of the character size). </para>
</para></description><requires><para>[<computeroutput>first</computeroutput>, <computeroutput>last</computeroutput>) is a valid range. </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> is mutable. </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> is <ulink url="http://en.cppreference.com/w/cpp/concept/LessThanComparable">LessThanComparable</ulink> </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> supports the <computeroutput>operator&gt;&gt;</computeroutput>, which returns an integer-type right-shifted a specified number of bits. </para></requires><postconditions><para>The elements in the range [<computeroutput>first</computeroutput>, <computeroutput>last</computeroutput>) are sorted in ascending order.</para></postconditions><returns><para><computeroutput>void</computeroutput>.</para></returns><throws><simpara><classname>std::exception</classname> Propagates exceptions if any of the element comparisons, the element swaps (or moves), the right shift, subtraction of right-shifted elements, functors, or any operations on iterators throw.</simpara></throws></function>
<function name="string_sort"><type>void</type><template>
<template-type-parameter name="RandomAccessIter"><purpose><para><ulink url="http://www.cplusplus.com/reference/iterator/RandomAccessIterator/">Random access iterator</ulink> </para></purpose></template-type-parameter>
<template-type-parameter name="Get_char"><purpose><para>Bracket functor equivalent to <computeroutput>operator</computeroutput>[], taking a number corresponding to the character offset.. </para></purpose></template-type-parameter>
<template-type-parameter name="Get_length"><purpose><para>Functor to get the length of the string in characters. TODO Check this and below and other places!!!</para></purpose></template-type-parameter>
</template><parameter name="first"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointer to first element. </para></description></parameter><parameter name="last"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointing to one beyond the end of data. </para></description></parameter><parameter name="getchar"><paramtype>Get_char</paramtype><description><para>Number corresponding to the character offset from bracket functor equivalent to <computeroutput>operator</computeroutput>[]. </para></description></parameter><parameter name="length"><paramtype>Get_length</paramtype><description><para>Functor to get the length of the string in characters.</para></description></parameter><purpose>String sort algorithm using random access iterators, wraps using default of <computeroutput>unsigned</computeroutput> char. </purpose><description><para>(All variants fall back to <computeroutput>std::sort</computeroutput> if the data size is too small, &lt; <computeroutput>detail::min_sort_size</computeroutput>).</para><para><computeroutput>integer_sort</computeroutput> is a fast templated in-place hybrid radix/comparison algorithm, which in testing tends to be roughly 50% to 2X faster than <computeroutput>std::sort</computeroutput> for large tests (&gt;=100kB).<sbr/>
Worst-case performance is <emphasis> O(N * (lg(range)/s + s)) </emphasis>, so <computeroutput>integer_sort</computeroutput> is asymptotically faster than pure comparison-based algorithms. <computeroutput>s</computeroutput> is <computeroutput>max_splits</computeroutput>, which defaults to 11, so its worst-case with default settings for 32-bit integers is <emphasis> O(N * ((32/11) </emphasis> slow radix-based iterations fast comparison-based iterations).<sbr/>
<sbr/>
Some performance plots of runtime vs. n and log(range) are provided:<sbr/>
<ulink url="../../doc/graph/windows_integer_sort.htm">windows_integer_sort</ulink> <sbr/>
<ulink url="../../doc/graph/osx_integer_sort.htm">osx_integer_sort</ulink></para><para>
<warning><para>Throwing an exception may cause data loss. This will also throw if a small vector resize throws, in which case there will be no data loss. </para></warning>
<warning><para>Invalid arguments cause undefined behaviour. </para></warning>
<note><para><computeroutput>spreadsort</computeroutput> function provides a wrapper that calls the fastest sorting algorithm available for a data type, enabling faster generic-programming.</para></note>
<para>The lesser of <emphasis> O(N*log(N)) </emphasis> comparisons and <emphasis> O(N*log(K/S + S)) </emphasis>operations worst-case, where: </para>
<para>* N is <computeroutput>last</computeroutput> - <computeroutput>first</computeroutput>, </para>
<para>* K is the log of the range in bits (32 for 32-bit integers using their full range), </para>
<para>* S is a constant called max_splits, defaulting to 11 (except for strings where it is the log of the character size). </para>
</para></description><requires><para>[<computeroutput>first</computeroutput>, <computeroutput>last</computeroutput>) is a valid range. </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> is mutable. </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> is <ulink url="http://en.cppreference.com/w/cpp/concept/LessThanComparable">LessThanComparable</ulink> </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> supports the <computeroutput>operator&gt;&gt;</computeroutput>, which returns an integer-type right-shifted a specified number of bits. </para></requires><postconditions><para>The elements in the range [<computeroutput>first</computeroutput>, <computeroutput>last</computeroutput>) are sorted in ascending order.</para></postconditions><returns><para><computeroutput>void</computeroutput>.</para></returns><throws><simpara><classname>std::exception</classname> Propagates exceptions if any of the element comparisons, the element swaps (or moves), the right shift, subtraction of right-shifted elements, functors, or any operations on iterators throw.</simpara></throws></function>
<function name="string_sort"><type>void</type><template>
<template-type-parameter name="RandomAccessIter"><purpose><para><ulink url="http://www.cplusplus.com/reference/iterator/RandomAccessIterator/">Random access iterator</ulink> </para></purpose></template-type-parameter>
<template-type-parameter name="Get_char"><purpose><para>???. </para></purpose></template-type-parameter>
<template-type-parameter name="Get_length"><purpose><para>??? TODO </para></purpose></template-type-parameter>
<template-type-parameter name="Compare"/>
</template><parameter name="first"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointer to first element. </para></description></parameter><parameter name="last"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointing to one beyond the end of data. </para></description></parameter><parameter name="getchar"><paramtype>Get_char</paramtype><description><para>??? </para></description></parameter><parameter name="length"><paramtype>Get_length</paramtype><description><para>???</para></description></parameter><parameter name="comp"><paramtype>Compare</paramtype><description><para>comparison functor. </para></description></parameter><purpose>String sort algorithm using random access iterators, wraps using default of <computeroutput>unsigned</computeroutput> char. </purpose><description><para>(All variants fall back to <computeroutput>std::sort</computeroutput> if the data size is too small, &lt; <computeroutput>detail::min_sort_size</computeroutput>).</para><para><computeroutput>integer_sort</computeroutput> is a fast templated in-place hybrid radix/comparison algorithm, which in testing tends to be roughly 50% to 2X faster than <computeroutput>std::sort</computeroutput> for large tests (&gt;=100kB).<sbr/>
Worst-case performance is <emphasis> O(N * (lg(range)/s + s)) </emphasis>, so <computeroutput>integer_sort</computeroutput> is asymptotically faster than pure comparison-based algorithms. <computeroutput>s</computeroutput> is <computeroutput>max_splits</computeroutput>, which defaults to 11, so its worst-case with default settings for 32-bit integers is <emphasis> O(N * ((32/11) </emphasis> slow radix-based iterations fast comparison-based iterations).<sbr/>
<sbr/>
Some performance plots of runtime vs. n and log(range) are provided:<sbr/>
<ulink url="../../doc/graph/windows_integer_sort.htm">windows_integer_sort</ulink> <sbr/>
<ulink url="../../doc/graph/osx_integer_sort.htm">osx_integer_sort</ulink></para><para>
<warning><para>Throwing an exception may cause data loss. This will also throw if a small vector resize throws, in which case there will be no data loss. </para></warning>
<warning><para>Invalid arguments cause undefined behaviour. </para></warning>
<note><para><computeroutput>spreadsort</computeroutput> function provides a wrapper that calls the fastest sorting algorithm available for a data type, enabling faster generic-programming.</para></note>
<para>The lesser of <emphasis> O(N*log(N)) </emphasis> comparisons and <emphasis> O(N*log(K/S + S)) </emphasis>operations worst-case, where: </para>
<para>* N is <computeroutput>last</computeroutput> - <computeroutput>first</computeroutput>, </para>
<para>* K is the log of the range in bits (32 for 32-bit integers using their full range), </para>
<para>* S is a constant called max_splits, defaulting to 11 (except for strings where it is the log of the character size). </para>
</para></description><requires><para>[<computeroutput>first</computeroutput>, <computeroutput>last</computeroutput>) is a valid range. </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> is mutable. </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> is <ulink url="http://en.cppreference.com/w/cpp/concept/LessThanComparable">LessThanComparable</ulink> </para></requires><postconditions><para>The elements in the range [<computeroutput>first</computeroutput>, <computeroutput>last</computeroutput>) are sorted in ascending order.</para></postconditions><returns><para><computeroutput>void</computeroutput>.</para></returns><throws><simpara><classname>std::exception</classname> Propagates exceptions if any of the element comparisons, the element swaps (or moves), the right shift, subtraction of right-shifted elements, functors, or any operations on iterators throw.</simpara></throws></function>
<function name="reverse_string_sort"><type>void</type><template>
<template-type-parameter name="RandomAccessIter"><purpose><para><ulink url="http://www.cplusplus.com/reference/iterator/RandomAccessIterator/">Random access iterator</ulink> </para></purpose></template-type-parameter>
<template-type-parameter name="Get_char"><purpose><para>???. </para></purpose></template-type-parameter>
<template-type-parameter name="Get_length"><purpose><para>??? TODO </para></purpose></template-type-parameter>
<template-type-parameter name="Compare"/>
</template><parameter name="first"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointer to first element. </para></description></parameter><parameter name="last"><paramtype>RandomAccessIter</paramtype><description><para>Iterator pointing to one beyond the end of data. </para></description></parameter><parameter name="getchar"><paramtype>Get_char</paramtype><description><para>??? </para></description></parameter><parameter name="length"><paramtype>Get_length</paramtype><description><para>???</para></description></parameter><parameter name="comp"><paramtype>Compare</paramtype><description><para>comparison functor. </para></description></parameter><purpose>Reverse String sort algorithm using random access iterators. </purpose><description><para>(All variants fall back to <computeroutput>std::sort</computeroutput> if the data size is too small, &lt; <computeroutput>detail::min_sort_size</computeroutput>).</para><para><computeroutput>integer_sort</computeroutput> is a fast templated in-place hybrid radix/comparison algorithm, which in testing tends to be roughly 50% to 2X faster than <computeroutput>std::sort</computeroutput> for large tests (&gt;=100kB).<sbr/>
Worst-case performance is <emphasis> O(N * (lg(range)/s + s)) </emphasis>, so <computeroutput>integer_sort</computeroutput> is asymptotically faster than pure comparison-based algorithms. <computeroutput>s</computeroutput> is <computeroutput>max_splits</computeroutput>, which defaults to 11, so its worst-case with default settings for 32-bit integers is <emphasis> O(N * ((32/11) </emphasis> slow radix-based iterations fast comparison-based iterations).<sbr/>
<sbr/>
Some performance plots of runtime vs. n and log(range) are provided:<sbr/>
<ulink url="../../doc/graph/windows_integer_sort.htm">windows_integer_sort</ulink> <sbr/>
<ulink url="../../doc/graph/osx_integer_sort.htm">osx_integer_sort</ulink></para><para>
<warning><para>Throwing an exception may cause data loss. This will also throw if a small vector resize throws, in which case there will be no data loss. </para></warning>
<warning><para>Invalid arguments cause undefined behaviour. </para></warning>
<note><para><computeroutput>spreadsort</computeroutput> function provides a wrapper that calls the fastest sorting algorithm available for a data type, enabling faster generic-programming.</para></note>
<para>The lesser of <emphasis> O(N*log(N)) </emphasis> comparisons and <emphasis> O(N*log(K/S + S)) </emphasis>operations worst-case, where: </para>
<para>* N is <computeroutput>last</computeroutput> - <computeroutput>first</computeroutput>, </para>
<para>* K is the log of the range in bits (32 for 32-bit integers using their full range), </para>
<para>* S is a constant called max_splits, defaulting to 11 (except for strings where it is the log of the character size). </para>
</para></description><requires><para>[<computeroutput>first</computeroutput>, <computeroutput>last</computeroutput>) is a valid range. </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> is mutable. </para></requires><requires><para><computeroutput>RandomAccessIter</computeroutput> <computeroutput>value_type</computeroutput> is <ulink url="http://en.cppreference.com/w/cpp/concept/LessThanComparable">LessThanComparable</ulink> </para></requires><postconditions><para>The elements in the range [<computeroutput>first</computeroutput>, <computeroutput>last</computeroutput>) are sorted in ascending order.</para></postconditions><returns><para><computeroutput>void</computeroutput>.</para></returns><throws><simpara><classname>std::exception</classname> Propagates exceptions if any of the element comparisons, the element swaps (or moves), the right shift, subtraction of right-shifted elements, functors, or any operations on iterators throw.</simpara></throws></function>
</namespace>
</namespace>
</header>
</library-reference>

76
doc/bibliography.html Normal file
View File

@@ -0,0 +1,76 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<link rel="stylesheet" type="text/css" href="../../../boost.css">
<title>Boost Sort library - Bibliography</title>
</head>
<body link="#0000FF" vlink="#800080">
<table border="0" cellpadding="7" cellspacing="0" width="100%" summary=
"header">
<tr>
<td valign="top" width="300">
<h3><a href="../../../index.htm"><img height="86" width="277" alt=
"C++ Boost" src="../../../boost.png" border="0"></a></h3>
</td>
<td valign="top">
<h1 align="center">Boost Sort library</h1>
<h2 align="center">Bibliography</h2>
</td>
</tr>
</table>
<div class="spirit-nav">
<a accesskey="p" href="acknowledgments.html"><img src="../../../doc/html/images/prev.png" alt="Prev"/></a>
<a accesskey="u" href="index.html"><img src="../../../doc/html/images/up.png" alt="Up"/></a>
<a accesskey="h" href="index.html"><img src="../../../doc/html/images/home.png" alt="Home"/></a>
</div>
<hr/>
<h2><a name="radix" id="radix"></a>Radix Sort</h2>
<p>A type of algorithm that sorts based upon distribution instead of by comparison. Wikipedia has an article about <a href="http://en.wikipedia.org/wiki/Radix_sort">Radix Sorting</a>.
A more detailed description of various Radix Sorting algorithms is provided here:</p>
<p>Donald Knuth. The Art of Computer Programming, Volume 3: Sorting and Searching,
Second Edition. Addison-Wesley, 1998. ISBN 0-201-89685-0.
Section 5.2.5: Sorting by Distribution, pp.168-179.</p>
<h2><a name="introsort" id="introsort"></a>Introsort</h2>
<p>A high-speed comparison-based sorting algorithm that takes O(N * log(N)) time.
<a href="http://www.cs.rpi.edu/~musser/gp/introsort.ps">paper</a></p>
<h2><a name="american_flag_sort" id="american_flag_sort"></a>American Flag Sort</h2>
<p>A high-speed hybrid string sorting algorithm that string_sort is partially based upon.
<a href="mcilroy.ps">paper</a></p>
<h2><a name="alr" id="alr"></a>Adaptive Left Radix</h2>
<p>A hybrid cache-friendly integer sorting algorithm with comparable speed on random data
to integer_sort, but does not have the optimizations for worst-case performance,
causing it to perform poorly on certain types of unevenly distributed data.
<a href="Maus11_2002.pdf">paper</a></p>
<h2><a name="spreadsort" id="spreadsort"></a>Original Spreadsort</h2>
<p>The algorithm that integer_sort was originally based on. integer_sort uses a smaller number of key bits at a time for better cache efficiency than the method described in the <a href="original_spreadsort06_2002.pdf">paper</a>. The importance of cache efficiency grew as CPU clock speeds increased while main memory latency stagnated.</p>
<hr/>
<div class="spirit-nav">
<a accesskey="p" href="acknowledgments.html"><img src="../../../doc/html/images/prev.png" alt="Prev"/></a>
<a accesskey="u" href="index.html"><img src="../../../doc/html/images/up.png" alt="Up"/></a>
<a accesskey="h" href="index.html"><img src="../../../doc/html/images/home.png" alt="Home"/></a>
</div>
<p><a href="http://validator.w3.org/check?uri=referer"><img border="0" src=
"http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01 Transitional"
height="31" width="88"></a></p>
<p>Revised
<!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->04
December, 2006<!--webbot bot="Timestamp" endspan i-checksum="38514" --></p>
<p><i>Copyright &copy; 2009 <a href=
"mailto:spreadsort@gmail.com">Steven Ross</a></i></p>
<p><i>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href=
"http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</a>)</i></p>
</body>
</html>

BIN
doc/bits_per_byte.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

152
doc/constants.html Normal file
View File

@@ -0,0 +1,152 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<link rel="stylesheet" type="text/css" href="../../../boost.css">
<title>Boost Sort library - Header &lt;boost/sort/spreadsort/sort.hpp&gt;</title>
</head>
<body link="#0000FF" vlink="#800080">
<table border="0" cellpadding="7" cellspacing="0" width="100%" summary=
"header">
<tr>
<td valign="top" width="300">
<h3><a href="../../../index.htm"><img height="86" width="277" alt=
"C++ Boost" src="../../../boost.png" border="0"></a></h3>
</td>
<td valign="top">
<h1 align="center">Boost Sort library</h1>
<h2 align="center">Header &lt;boost/sort/spreadsort/constants.hpp&gt;</h2>
</td>
</tr>
</table>
<div class="spirit-nav">
<a accesskey="p" href="string_sort.html"><img src="../../../doc/html/images/prev.png" alt="Prev"/></a>
<a accesskey="u" href="index.html"><img src="../../../doc/html/images/up.png" alt="Up"/></a>
<a accesskey="h" href="index.html"><img src="../../../doc/html/images/home.png" alt="Home"/></a>
<a accesskey="n" href="rationale.html"><img src="../../../doc/html/images/next.png" alt="Next"/></a>
</div>
<hr/>
<h2>Contents</h2>
<dl class="page-index">
<dt><a href="#introduction">Introduction</a></dt>
<dt><a href="#constants">Constant Values</a></dt>
<dd>
<dl class="page-index">
<dt><a href="#max_splits">max_splits</a></dt>
<dt><a href="#max_finishing_splits">max_finishing_splits</a></dt>
<dt><a href="#min_sort_size">min_sort_size</a></dt>
<dt><a href="#int_log_mean_bin_size">int_log_mean_bin_size</a></dt>
<dt><a href="#int_log_min_split_count">int_log_min_split_count</a></dt>
<dt><a href="#int_log_finishing_count">int_log_finishing_count</a></dt>
<dt><a href="#float_log_mean_bin_size">float_log_mean_bin_size</a></dt>
<dt><a href="#float_log_min_split_count">float_log_min_split_count</a></dt>
<dt><a href="#float_log_finishing_count">float_log_finishing_count</a></dt>
</dl>
</dd>
</dl>
<hr>
<h2><a name="introduction" id="introduction"></a>Introduction</h2>
<p>These are a set of constants in boost::detail that are only used to tune
<a href="integer_sort.html">integer_sort</a> and <a href="float_sort.html">float_sort</a>.
They are described here because in some situations developers may wish to modify them
to improve performance. Default settings should be good enough for most systems;
modification without a thorough understanding of what they do is not recommended.</p>
<h2><a name="constants" id="constants"></a>Constant Values</h2>
<dt><a href="#max_splits">max_splits</a></dt>
<dt><a href="#max_finishing_splits">max_finishing_splits</a></dt>
<dt><a href="#min_sort_size">min_sort_size</a></dt>
<dt><a href="#int_log_mean_bin_size">int_log_mean_bin_size</a></dt>
<dt><a href="#int_log_min_split_count">int_log_min_split_count</a></dt>
<dt><a href="#int_log_finishing_count">int_log_finishing_count</a></dt>
<dt><a href="#float_log_mean_bin_size">float_log_mean_bin_size</a></dt>
<dt><a href="#float_log_min_split_count">float_log_min_split_count</a></dt>
<dt><a href="#float_log_finishing_count">float_log_finishing_count</a></dt>
<dl><a name="max_splits" id="max_splits"><b>max_splits</b>:</a>
<dt>enum { max_splits = 11 };</dt>
<dt><b>Description:</b> log base 2 of the maximum number of pieces the data is split into per iteration.
Usually best between 10 and 13.
This number is used for both floats and integers,
and should correspond to the minimum L1 cache size this software will run on.</dt></dl>
<dl><a name="max_finishing_splits" id="max_finishing_splits"><b>max_finishing_splits:</b></a>
<dt>enum { max_finishing_splits = max_splits + 1 };</dt>
<dt><b>Description:</b> log of the maximum number of pieces the data is split into if it can
complete sorting in one iteration, once radix sorting has already been decided upon.
This is a special optimization, and is usually best as max_splits + 1.
This is used because the occasional cache miss to finish sorting is less expensive
in runtime than running another iteration.</dt></dl>
<dl><a name="min_sort_size" id="min_sort_size"><b>min_sort_size:</b></a>
<dt>enum { min_sort_size = 3000 };</dt>
<dt><b>Description:</b> std::sort is automatically used on input vectors smaller than this size for all algorithms described here,
skipping radix sorting entirely. Due to overhead, radix sorting shouldn't be used on small
vectors. This should be the point at which
hybrid sorting becomes faster than comparison-based sorting.
3000 is a good value.</dt></dl>
<dl><a name="int_log_mean_bin_size" id="int_log_mean_bin_size"><b>int_log_mean_bin_size:</b></a>
<dt>enum { int_log_mean_bin_size = 2 };</dt>
<dt><b>Description:</b> The log of the minimum mean number of items per bin in <a href="integer_sort.html">integer_sort</a>.
2-4 are good values.</dt></dl>
<dl><a name="int_log_min_split_count" id="int_log_min_split_count"><b>int_log_min_split_count:</b></a>
<dt>enum { int_log_min_split_count = 9 };</dt>
<dt><b>Description:</b> This plus the int_log_mean_bin_size plus the maximum number of remaining
radix iterations is the log of the minimum number of elements to recurse with <a href="integer_sort.html">integer_sort</a>.
Otherwise std::sort is used.
The faster std::sort is with small vectors relative to <a href="integer_sort.html">integer_sort</a>, the larger this number
should be. 6 to max_splits are good values.
This value cannot exceed max_splits.</dt></dl>
<dl><a name="int_log_finishing_count" id="int_log_finishing_count"><b>int_log_finishing_count:</b></a>
<dt>enum { int_log_finishing_count = 31 };</dt>
<dt><b>Description:</b> The log of the threshold minimum data size to force radix sorting,
if sorting will complete in one iteration.
Defaults to 31, which means that this special-case is not applied.</dt></dl>
<dl><a name="float_log_mean_bin_size" id="float_log_mean_bin_size"><b>float_log_mean_bin_size:</b></a>
<dt>enum { int_log_mean_bin_size = 2 };</dt>
<dt><b>Description:</b> The log of the minimum mean number of items per bin in <a href="float_sort.html">float_sort</a>.
2 is a good value.</dt></dl>
<dl><a name="float_log_min_split_count" id="float_log_min_split_count"><b>float_log_min_split_count:</b></a>
<dt>enum { int_log_min_split_count = 8 };</dt>
<dt><b>Description:</b> This plus the float_log_mean_bin_size plus the maximum number of remaining
radix iterations is the log of the minimum number of elements to recurse with <a href="float_sort.html">float_sort</a>.
Otherwise std::sort is used.
The faster std::sort is with small vectors relative to <a href="float_sort.html">float_sort</a>, the larger this number
should be. 4 to max_splits are good values.
This value cannot exceed max_splits.</dt></dl>
<dl><a name="float_log_finishing_count" id="float_log_finishing_count"><b>float_log_finishing_count:</b></a>
<dt>enum { int_log_finishing_count = 4 };</dt>
<dt><b>Description:</b> The log of the threshold minimum data size to force radix sorting,
if sorting will complete in one iteration. 4 is a good value.</dt></dl>
<hr/>
<div class="spirit-nav">
<a accesskey="p" href="string_sort.html"><img src="../../../doc/html/images/prev.png" alt="Prev"/></a>
<a accesskey="u" href="index.html"><img src="../../../doc/html/images/up.png" alt="Up"/></a>
<a accesskey="h" href="index.html"><img src="../../../doc/html/images/home.png" alt="Home"/></a>
<a accesskey="n" href="rationale.html"><img src="../../../doc/html/images/next.png" alt="Next"/></a>
</div>
<p><a href="http://validator.w3.org/check?uri=referer"><img border="0" src=
"http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01 Transitional"
height="31" width="88"></a></p>
<p>Revised
<!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->04
December, 2006<!--webbot bot="Timestamp" endspan i-checksum="38514" --></p>
<p><i>Copyright &copy; 2009 <a href=
"mailto:spreadsort@gmail.com">Steven Ross</a></i></p>
<p><i>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href=
"http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</a>)</i></p>
</body>
</html>

91
doc/definitions.html Normal file
View File

@@ -0,0 +1,91 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<link rel="stylesheet" type="text/css" href="../../../boost.css">
<title>Boost Sort library - Definitions</title>
</head>
<body link="#0000FF" vlink="#800080">
<table border="0" cellpadding="7" cellspacing="0" width="100%" summary=
"header">
<tr>
<td valign="top" width="300">
<h3><a href="../../../index.htm"><img height="86" width="277" alt=
"C++ Boost" src="../../../boost.png" border="0"></a></h3>
</td>
<td valign="top">
<h1 align="center">Boost Sort library</h1>
<h2 align="center">Definitions</h2>
</td>
</tr>
</table>
<div class="spirit-nav">
<a accesskey="p" href="rationale.html"><img src="../../../doc/html/images/prev.png" alt="Prev"/></a>
<a accesskey="u" href="index.html"><img src="../../../doc/html/images/up.png" alt="Up"/></a>
<a accesskey="h" href="index.html"><img src="../../../doc/html/images/home.png" alt="Home"/></a>
<a accesskey="n" href="faq.html"><img src="../../../doc/html/images/next.png" alt="Next"/></a>
</div>
<hr/>
<h2>Contents</h2>
<dl class="page-index">
<dt><a href="#introduction">Introduction</a></dt>
<dt><a href="#definitions">Definitions</a></dt>
<dd>
<dl class="page-index">
<dt><a href="#stable">stable sort</a></dt>
</dl>
</dd>
</dl>
<hr>
<h2><a name="introduction" id="introduction"></a>Introduction</h2>
<p>Definitions of terms</p>
<h2><a name="definitions" id="definitions"></a>Definitions</h2>
<dl class="definitions">
<dt><a name="stable" id="stable"></a><b>stable sort:</b>
A sorting approach that preserves pre-existing order.
If there are two elements with identical keys
in a list that is later stably sorted,
whichever came first in the initial list will come first in a stably sorted list.
The algorithms provided here provide no such guarantee; items with identical keys
will have arbitrary resulting order relative to each other.</dt>
</dl>
<hr/>
<div class="spirit-nav">
<a accesskey="p" href="rationale.html"><img src="../../../doc/html/images/prev.png" alt="Prev"/></a>
<a accesskey="u" href="index.html"><img src="../../../doc/html/images/up.png" alt="Up"/></a>
<a accesskey="h" href="index.html"><img src="../../../doc/html/images/home.png" alt="Home"/></a>
<a accesskey="n" href="faq.html"><img src="../../../doc/html/images/next.png" alt="Next"/></a>
</div>
<p><a href="http://validator.w3.org/check?uri=referer"><img border="0" src=
"http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01 Transitional"
height="31" width="88"></a></p>
<p>Revised
<!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->04
December, 2006<!--webbot bot="Timestamp" endspan i-checksum="38514" --></p>
<p><i>Copyright &copy; 2009 <a href=
"mailto:spreadsort@gmail.com">Steven Ross</a></i></p>
<p><i>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href=
"http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</a>)</i></p>
</body>
</html>

View File

View File

View File

@@ -0,0 +1,136 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: /example/sample.cpp</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li><a href="examples.html"><span>Examples</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">/example/sample.cpp</div> </div>
</div><!--header-->
<div class="contents">
<p>Integer sort algorithm using random access iterators. All variants fall back to <code>std::sort</code> if the data is too small.<code>integer_sort</code> is a fast templated in-place hybrid radix/comparison algorithm, which in testing tends to be roughly 50% to 2X faster than <code>std::sort</code> for large tests (&gt;=100kB).<br />
Worst-case performance is <em> O(N * (lg(range)/s + s)) </em>, so <code>integer_sort</code> is asymptotically faster than pure comparison-based algorithms. <code>s</code> is <code>max_splits</code>, which defaults to 11, so its worst-case with default settings for 32-bit integers is <em> O(N * ((32/11) </em> slow radix-based iterations fast comparison-based iterations).<br />
<br />
Some performance plots of runtime vs. n and log(range) are provided:<br />
<a href="../../../graph/windows_integer_sort.htm">windows_integer_sort</a> <br />
<a href="../../../graph/osx_integer_sort.htm">osx_integer_sort</a></p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">RandomAccessIter</td><td><a href="http://www.cplusplus.com/reference/iterator/RandomAccessIterator/">Random access iterator</a> </td></tr>
</table>
</dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">first</td><td>Iterator pointer to first element. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">last</td><td>Iterator pointing to one beyond the end of data.</td></tr>
</table>
</dd>
</dl>
<dl class="section pre"><dt>Precondition</dt><dd>[<code>first</code>, <code>last</code>) is a valid range. </dd>
<dd>
<code>RandomAccessIter</code> <code>value_type</code> is mutable. </dd>
<dd>
<code>RandomAccessIter</code> <code>value_type</code> is <a href="http://en.cppreference.com/w/cpp/concept/LessThanComparable">LessThanComparable</a> </dd>
<dd>
<code>RandomAccessIter</code> <code>value_type</code> supports the <code>operator&gt;&gt;</code>, which returns an integer-type right-shifted a specified number of bits. </dd></dl>
<dl class="section post"><dt>Postcondition</dt><dd>The elements in the range [<code>first</code>, <code>last</code>) are sorted in ascending order.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd><code>void</code>.</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">Propagates</td><td>exceptions if any of the element comparisons, the element swaps (or moves), the right shift, subtraction of right-shifted elements, functors, or any operations on iterators throw.</td></tr>
</table>
</dd>
</dl>
<dl class="section warning"><dt>Warning</dt><dd>Throwing an exception may cause data loss. This will also throw if a small vector resize throws, in which case there will be no data loss. </dd>
<dd>
Invalid arguments cause undefined behaviour. </dd></dl>
<dl class="section note"><dt>Note</dt><dd><code>spreadsort</code> function provides a wrapper that calls the fastest sorting algorithm available for a data type, enabling faster generic-programming.</dd></dl>
<dl class="section remark"><dt>Remarks</dt><dd>The lesser of <em> O(N*log(N)) </em> comparisons and <em> O(N*log(K/S + S)) </em>operations worst-case, where: </dd>
<dd>
* N is <code>last</code> - <code>first</code>, </dd>
<dd>
* K is the log of the range in bits (32 for 32-bit integers using their full range), </dd>
<dd>
* S is a constant called max_splits, defaulting to 11 (except for strings where it is the log of the character size).</dd></dl>
<div class="fragment"></div><!-- fragment --> </div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Tue Jan 6 2015 16:36:35 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,290 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/example/alrbreaker.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html">example</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">alrbreaker.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="spreadsort_8hpp_source.html">boost/sort/spreadsort/spreadsort.hpp</a>&gt;</code><br />
<code>#include &lt;time.h&gt;</code><br />
<code>#include &lt;stdio.h&gt;</code><br />
<code>#include &lt;stdlib.h&gt;</code><br />
<code>#include &lt;algorithm&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
<code>#include &lt;fstream&gt;</code><br />
<code>#include &lt;sstream&gt;</code><br />
<code>#include &lt;iostream&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:afb8c72ce35c4a1f4a2588d6573e54aa1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="alrbreaker_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a>&#160;&#160;&#160;boost::uint64_t</td></tr>
<tr class="separator:afb8c72ce35c4a1f4a2588d6573e54aa1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3bc09656dab629cfa24aa2ab3f44a3e6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="alrbreaker_8cpp.html#a3bc09656dab629cfa24aa2ab3f44a3e6">ALR_THRESHOLD</a>&#160;&#160;&#160;3</td></tr>
<tr class="separator:a3bc09656dab629cfa24aa2ab3f44a3e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a53572e34857429ae9b6d9c5f4d02b453"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="alrbreaker_8cpp.html#a53572e34857429ae9b6d9c5f4d02b453">fill_vector</a> (vector&lt; <a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a> &gt; &amp;input, const <a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a> base_value, unsigned remaining_bits)</td></tr>
<tr class="separator:a53572e34857429ae9b6d9c5f4d02b453"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0fc34f49b0e6eaed5e5c3accb409b1d1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="alrbreaker_8cpp.html#a0fc34f49b0e6eaed5e5c3accb409b1d1">main</a> (int, const char **)</td></tr>
<tr class="separator:a0fc34f49b0e6eaed5e5c3accb409b1d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a4587b2f61869f9798cb12a8ebb37387d"><td class="memItemLeft" align="right" valign="top">const unsigned&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="alrbreaker_8cpp.html#a4587b2f61869f9798cb12a8ebb37387d">max_count</a> = <a class="el" href="binaryalrbreaker_8cpp.html#a3bc09656dab629cfa24aa2ab3f44a3e6">ALR_THRESHOLD</a> - 1</td></tr>
<tr class="separator:a4587b2f61869f9798cb12a8ebb37387d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a50fb2847ba87c9bd84e0c5c8a951f9de"><td class="memItemLeft" align="right" valign="top">const unsigned&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="alrbreaker_8cpp.html#a50fb2847ba87c9bd84e0c5c8a951f9de">bit_shift</a></td></tr>
<tr class="separator:a50fb2847ba87c9bd84e0c5c8a951f9de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc30457e398e72300f20714123913b78"><td class="memItemLeft" align="right" valign="top">const unsigned&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="alrbreaker_8cpp.html#afc30457e398e72300f20714123913b78">radix_threshold</a> = detail::rough_log_2_size(<a class="el" href="binaryalrbreaker_8cpp.html#a4587b2f61869f9798cb12a8ebb37387d">max_count</a>) + 1</td></tr>
<tr class="separator:afc30457e398e72300f20714123913b78"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60c4ea1dd4d297e0d2e395375e0e716c"><td class="memItemLeft" align="right" valign="top">const unsigned&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="alrbreaker_8cpp.html#a60c4ea1dd4d297e0d2e395375e0e716c">top_splits</a> = 12</td></tr>
<tr class="separator:a60c4ea1dd4d297e0d2e395375e0e716c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b984673f3b3e097d3f37508923452fa"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="alrbreaker_8cpp.html#a8b984673f3b3e097d3f37508923452fa">typed_one</a> = 1</td></tr>
<tr class="separator:a8b984673f3b3e097d3f37508923452fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="a3bc09656dab629cfa24aa2ab3f44a3e6"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define ALR_THRESHOLD&#160;&#160;&#160;3</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="afb8c72ce35c4a1f4a2588d6573e54aa1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define <a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a>&#160;&#160;&#160;boost::uint64_t</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a53572e34857429ae9b6d9c5f4d02b453"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void fill_vector </td>
<td>(</td>
<td class="paramtype">vector&lt; <a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a>&#160;</td>
<td class="paramname"><em>base_value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>remaining_bits</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a0fc34f49b0e6eaed5e5c3accb409b1d1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char **&#160;</td>
<td class="paramname">&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a class="anchor" id="a50fb2847ba87c9bd84e0c5c8a951f9de"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const unsigned bit_shift</td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= detail::rough_log_2_size(<a class="code" href="alrbreaker_8cpp.html#a4587b2f61869f9798cb12a8ebb37387d">max_count</a>) -</div>
<div class="line"> detail::int_log_mean_bin_size</div>
<div class="ttc" id="alrbreaker_8cpp_html_a4587b2f61869f9798cb12a8ebb37387d"><div class="ttname"><a href="alrbreaker_8cpp.html#a4587b2f61869f9798cb12a8ebb37387d">max_count</a></div><div class="ttdeci">const unsigned max_count</div><div class="ttdef"><b>Definition:</b> alrbreaker.cpp:28</div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a4587b2f61869f9798cb12a8ebb37387d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const unsigned max_count = <a class="el" href="binaryalrbreaker_8cpp.html#a3bc09656dab629cfa24aa2ab3f44a3e6">ALR_THRESHOLD</a> - 1</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="afc30457e398e72300f20714123913b78"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const unsigned radix_threshold = detail::rough_log_2_size(<a class="el" href="binaryalrbreaker_8cpp.html#a4587b2f61869f9798cb12a8ebb37387d">max_count</a>) + 1</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a60c4ea1dd4d297e0d2e395375e0e716c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const unsigned top_splits = 12</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a8b984673f3b3e097d3f37508923452fa"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a> typed_one = 1</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,164 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/example/alreadysorted.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html">example</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">alreadysorted.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="spreadsort_8hpp_source.html">boost/sort/spreadsort/spreadsort.hpp</a>&gt;</code><br />
<code>#include &lt;time.h&gt;</code><br />
<code>#include &lt;stdio.h&gt;</code><br />
<code>#include &lt;stdlib.h&gt;</code><br />
<code>#include &lt;algorithm&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
<code>#include &lt;fstream&gt;</code><br />
<code>#include &lt;sstream&gt;</code><br />
<code>#include &lt;iostream&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:afb8c72ce35c4a1f4a2588d6573e54aa1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="alreadysorted_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a>&#160;&#160;&#160;int</td></tr>
<tr class="separator:afb8c72ce35c4a1f4a2588d6573e54aa1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a217dbf8b442f20279ea00b898af96f52"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="alreadysorted_8cpp.html#a217dbf8b442f20279ea00b898af96f52">main</a> (int argc, const char **argv)</td></tr>
<tr class="separator:a217dbf8b442f20279ea00b898af96f52"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="afb8c72ce35c4a1f4a2588d6573e54aa1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define <a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a>&#160;&#160;&#160;int</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a217dbf8b442f20279ea00b898af96f52"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char **&#160;</td>
<td class="paramname"><em>argv</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,109 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: Class List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li class="current"><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Class List</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
<table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9658;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceboost.html" target="_self">boost</a></td><td class="desc"></td></tr>
<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structbracket.html" target="_self">bracket</a></td><td class="desc"></td></tr>
<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_d_a_t_a___t_y_p_e.html" target="_self">DATA_TYPE</a></td><td class="desc"></td></tr>
<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structgetsize.html" target="_self">getsize</a></td><td class="desc"></td></tr>
<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structgreaterthan.html" target="_self">greaterthan</a></td><td class="desc"></td></tr>
<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structlessthan.html" target="_self">lessthan</a></td><td class="desc"></td></tr>
<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structnegrightshift.html" target="_self">negrightshift</a></td><td class="desc"></td></tr>
<tr id="row_7_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structrightshift.html" target="_self">rightshift</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 B

BIN
doc/doxygen/html/bc_s.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 676 B

BIN
doc/doxygen/html/bdwn.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 B

View File

@@ -0,0 +1,306 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/example/binaryalrbreaker.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html">example</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">binaryalrbreaker.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="spreadsort_8hpp_source.html">boost/sort/spreadsort/spreadsort.hpp</a>&gt;</code><br />
<code>#include &lt;time.h&gt;</code><br />
<code>#include &lt;stdio.h&gt;</code><br />
<code>#include &lt;stdlib.h&gt;</code><br />
<code>#include &lt;algorithm&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
<code>#include &lt;fstream&gt;</code><br />
<code>#include &lt;sstream&gt;</code><br />
<code>#include &lt;iostream&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:afb8c72ce35c4a1f4a2588d6573e54aa1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="binaryalrbreaker_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a>&#160;&#160;&#160;boost::uint64_t</td></tr>
<tr class="separator:afb8c72ce35c4a1f4a2588d6573e54aa1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3bc09656dab629cfa24aa2ab3f44a3e6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="binaryalrbreaker_8cpp.html#a3bc09656dab629cfa24aa2ab3f44a3e6">ALR_THRESHOLD</a>&#160;&#160;&#160;3</td></tr>
<tr class="separator:a3bc09656dab629cfa24aa2ab3f44a3e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ac9ac611850049644567c33a1b01e108a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="binaryalrbreaker_8cpp.html#ac9ac611850049644567c33a1b01e108a">fill_vector</a> (vector&lt; <a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a> &gt; &amp;input, const <a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a> base_value, unsigned remaining_bits, const vector&lt; unsigned &gt; &amp;indices, int index)</td></tr>
<tr class="separator:ac9ac611850049644567c33a1b01e108a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0154ebfc03900bb5789ff9a306a480a9"><td class="memItemLeft" align="right" valign="top">unsigned&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="binaryalrbreaker_8cpp.html#a0154ebfc03900bb5789ff9a306a480a9">get_index</a> (unsigned count)</td></tr>
<tr class="separator:a0154ebfc03900bb5789ff9a306a480a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0fc34f49b0e6eaed5e5c3accb409b1d1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="binaryalrbreaker_8cpp.html#a0fc34f49b0e6eaed5e5c3accb409b1d1">main</a> (int, const char **)</td></tr>
<tr class="separator:a0fc34f49b0e6eaed5e5c3accb409b1d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a4587b2f61869f9798cb12a8ebb37387d"><td class="memItemLeft" align="right" valign="top">const unsigned&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="binaryalrbreaker_8cpp.html#a4587b2f61869f9798cb12a8ebb37387d">max_count</a> = <a class="el" href="binaryalrbreaker_8cpp.html#a3bc09656dab629cfa24aa2ab3f44a3e6">ALR_THRESHOLD</a> - 1</td></tr>
<tr class="separator:a4587b2f61869f9798cb12a8ebb37387d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a50fb2847ba87c9bd84e0c5c8a951f9de"><td class="memItemLeft" align="right" valign="top">const unsigned&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="binaryalrbreaker_8cpp.html#a50fb2847ba87c9bd84e0c5c8a951f9de">bit_shift</a></td></tr>
<tr class="separator:a50fb2847ba87c9bd84e0c5c8a951f9de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc30457e398e72300f20714123913b78"><td class="memItemLeft" align="right" valign="top">const unsigned&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="binaryalrbreaker_8cpp.html#afc30457e398e72300f20714123913b78">radix_threshold</a> = detail::rough_log_2_size(<a class="el" href="binaryalrbreaker_8cpp.html#a4587b2f61869f9798cb12a8ebb37387d">max_count</a>) + 1</td></tr>
<tr class="separator:afc30457e398e72300f20714123913b78"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b984673f3b3e097d3f37508923452fa"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="binaryalrbreaker_8cpp.html#a8b984673f3b3e097d3f37508923452fa">typed_one</a> = 1</td></tr>
<tr class="separator:a8b984673f3b3e097d3f37508923452fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="a3bc09656dab629cfa24aa2ab3f44a3e6"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define ALR_THRESHOLD&#160;&#160;&#160;3</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="afb8c72ce35c4a1f4a2588d6573e54aa1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define <a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a>&#160;&#160;&#160;boost::uint64_t</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ac9ac611850049644567c33a1b01e108a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void fill_vector </td>
<td>(</td>
<td class="paramtype">vector&lt; <a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a>&#160;</td>
<td class="paramname"><em>base_value</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>remaining_bits</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const vector&lt; unsigned &gt; &amp;&#160;</td>
<td class="paramname"><em>indices</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>index</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a0154ebfc03900bb5789ff9a306a480a9"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned get_index </td>
<td>(</td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>count</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a0fc34f49b0e6eaed5e5c3accb409b1d1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char **&#160;</td>
<td class="paramname">&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a class="anchor" id="a50fb2847ba87c9bd84e0c5c8a951f9de"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const unsigned bit_shift</td>
</tr>
</table>
</div><div class="memdoc">
<b>Initial value:</b><div class="fragment"><div class="line">= detail::rough_log_2_size(<a class="code" href="binaryalrbreaker_8cpp.html#a4587b2f61869f9798cb12a8ebb37387d">max_count</a>) -</div>
<div class="line"> detail::int_log_mean_bin_size</div>
<div class="ttc" id="binaryalrbreaker_8cpp_html_a4587b2f61869f9798cb12a8ebb37387d"><div class="ttname"><a href="binaryalrbreaker_8cpp.html#a4587b2f61869f9798cb12a8ebb37387d">max_count</a></div><div class="ttdeci">const unsigned max_count</div><div class="ttdef"><b>Definition:</b> binaryalrbreaker.cpp:28</div></div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a4587b2f61869f9798cb12a8ebb37387d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const unsigned max_count = <a class="el" href="binaryalrbreaker_8cpp.html#a3bc09656dab629cfa24aa2ab3f44a3e6">ALR_THRESHOLD</a> - 1</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="afc30457e398e72300f20714123913b78"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const unsigned radix_threshold = detail::rough_log_2_size(<a class="el" href="binaryalrbreaker_8cpp.html#a4587b2f61869f9798cb12a8ebb37387d">max_count</a>) + 1</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a8b984673f3b3e097d3f37508923452fa"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a> typed_one = 1</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,142 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/example/boostrandomgen.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html">example</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">boostrandomgen.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;stdio.h&gt;</code><br />
<code>#include &quot;stdlib.h&quot;</code><br />
<code>#include &lt;fstream&gt;</code><br />
<code>#include &lt;iostream&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
<code>#include &lt;boost/random.hpp&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a217dbf8b442f20279ea00b898af96f52"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boostrandomgen_8cpp.html#a217dbf8b442f20279ea00b898af96f52">main</a> (int argc, const char **argv)</td></tr>
<tr class="separator:a217dbf8b442f20279ea00b898af96f52"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a217dbf8b442f20279ea00b898af96f52"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char **&#160;</td>
<td class="paramname"><em>argv</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,157 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/example/caseinsensitive.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html">example</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">caseinsensitive.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;boost/algorithm/string.hpp&gt;</code><br />
<code>#include &lt;<a class="el" href="string__sort_8hpp_source.html">boost/sort/spreadsort/string_sort.hpp</a>&gt;</code><br />
<code>#include &lt;time.h&gt;</code><br />
<code>#include &lt;stdio.h&gt;</code><br />
<code>#include &lt;stdlib.h&gt;</code><br />
<code>#include &lt;algorithm&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
<code>#include &lt;iostream&gt;</code><br />
<code>#include &lt;fstream&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlessthan.html">lessthan</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structbracket.html">bracket</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structgetsize.html">getsize</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a217dbf8b442f20279ea00b898af96f52"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="caseinsensitive_8cpp.html#a217dbf8b442f20279ea00b898af96f52">main</a> (int argc, const char **argv)</td></tr>
<tr class="separator:a217dbf8b442f20279ea00b898af96f52"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a217dbf8b442f20279ea00b898af96f52"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char **&#160;</td>
<td class="paramname"><em>argv</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,154 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/example/charstringsample.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html">example</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">charstringsample.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="string__sort_8hpp_source.html">boost/sort/spreadsort/string_sort.hpp</a>&gt;</code><br />
<code>#include &lt;time.h&gt;</code><br />
<code>#include &lt;stdio.h&gt;</code><br />
<code>#include &lt;stdlib.h&gt;</code><br />
<code>#include &lt;algorithm&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
<code>#include &lt;iostream&gt;</code><br />
<code>#include &lt;fstream&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structbracket.html">bracket</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structgetsize.html">getsize</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a217dbf8b442f20279ea00b898af96f52"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="charstringsample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">main</a> (int argc, const char **argv)</td></tr>
<tr class="separator:a217dbf8b442f20279ea00b898af96f52"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a217dbf8b442f20279ea00b898af96f52"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char **&#160;</td>
<td class="paramname"><em>argv</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,114 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: Class Index</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li class="current"><a href="classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Class Index</div> </div>
</div><!--header-->
<div class="contents">
<div class="qindex"><a class="qindex" href="#letter_B">B</a>&#160;|&#160;<a class="qindex" href="#letter_D">D</a>&#160;|&#160;<a class="qindex" href="#letter_G">G</a>&#160;|&#160;<a class="qindex" href="#letter_L">L</a>&#160;|&#160;<a class="qindex" href="#letter_N">N</a>&#160;|&#160;<a class="qindex" href="#letter_R">R</a></div>
<table style="margin: 10px; white-space: nowrap;" align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
<tr><td rowspan="2" valign="bottom"><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;D&#160;&#160;</div></td></tr></table>
</td><td rowspan="2" valign="bottom"><a name="letter_g"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;g&#160;&#160;</div></td></tr></table>
</td><td rowspan="2" valign="bottom"><a name="letter_l"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;l&#160;&#160;</div></td></tr></table>
</td><td rowspan="2" valign="bottom"><a name="letter_r"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;r&#160;&#160;</div></td></tr></table>
</td></tr>
<tr></tr>
<tr><td valign="top"><a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structgetsize.html">getsize</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structlessthan.html">lessthan</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrightshift.html">rightshift</a>&#160;&#160;&#160;</td></tr>
<tr><td rowspan="2" valign="bottom"><a name="letter_b"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;b&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="structgreaterthan.html">greaterthan</a>&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_n"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;n&#160;&#160;</div></td></tr></table>
</td><td></td></tr>
<tr><td></td><td></td></tr>
<tr><td valign="top"><a class="el" href="structbracket.html">bracket</a>&#160;&#160;&#160;</td><td></td><td valign="top"><a class="el" href="structnegrightshift.html">negrightshift</a>&#160;&#160;&#160;</td><td></td></tr>
<tr><td></td><td></td><td></td><td></td></tr>
</table>
<div class="qindex"><a class="qindex" href="#letter_B">B</a>&#160;|&#160;<a class="qindex" href="#letter_D">D</a>&#160;|&#160;<a class="qindex" href="#letter_G">G</a>&#160;|&#160;<a class="qindex" href="#letter_L">L</a>&#160;|&#160;<a class="qindex" href="#letter_N">N</a>&#160;|&#160;<a class="qindex" href="#letter_R">R</a></div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

BIN
doc/doxygen/html/closed.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

View File

@@ -0,0 +1,132 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/include/boost/sort/spreadsort/detail/constants.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_1878a3f4746a95c6aad317458cc7ef80.html">boost</a></li><li class="navelem"><a class="el" href="dir_0dcad0da4f36218cbabb216021de9867.html">sort</a></li><li class="navelem"><a class="el" href="dir_4aa236a92b75d6f514e733718a475329.html">spreadsort</a></li><li class="navelem"><a class="el" href="dir_1b6f0a484b3a75c2ed43dc394e95eff6.html">detail</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#enum-members">Enumerations</a> </div>
<div class="headertitle">
<div class="title">constants.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="constants_8hpp_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespaceboost"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespaceboost_1_1sort"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort.html">boost::sort</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespaceboost_1_1sort_1_1detail"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort_1_1detail.html">boost::sort::detail</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:a7bbd2027f75936442318063f34953907"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom">{ <br />
&#160;&#160;<a class="el" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a17b216febe1b5e8212a80231592fc9d9">boost::sort::detail::max_splits</a> = 11,
<a class="el" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907acfdc43b3d7aa6df69b0f6982918056c7">boost::sort::detail::max_finishing_splits</a> = max_splits + 1,
<a class="el" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a2e171c91f6c9e1d82643e4b35a4c65de">boost::sort::detail::int_log_mean_bin_size</a> = 2,
<a class="el" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a53383c14d73d50ed8faaa695d820a5bf">boost::sort::detail::int_log_min_split_count</a> = 9,
<br />
&#160;&#160;<a class="el" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907ae0c3ec0c116b92c92015245fd5024a27">boost::sort::detail::int_log_finishing_count</a> = 31,
<a class="el" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a0631b5d90d6ff0f1ff5370c616047a33">boost::sort::detail::float_log_mean_bin_size</a> = 2,
<a class="el" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907aa0ee6e920e1d3d09e148ce00a985340c">boost::sort::detail::float_log_min_split_count</a> = 8,
<a class="el" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a498b754f6198248703d3907562207d28">boost::sort::detail::float_log_finishing_count</a> = 4,
<br />
&#160;&#160;<a class="el" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907aff33660c3058d4e081b7d4353aae659d">boost::sort::detail::min_sort_size</a> = 1000
<br />
}</td></tr>
<tr class="separator:a7bbd2027f75936442318063f34953907"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 7 2015 17:29:22 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,153 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/include/boost/sort/spreadsort/detail/constants.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_1878a3f4746a95c6aad317458cc7ef80.html">boost</a></li><li class="navelem"><a class="el" href="dir_0dcad0da4f36218cbabb216021de9867.html">sort</a></li><li class="navelem"><a class="el" href="dir_4aa236a92b75d6f514e733718a475329.html">spreadsort</a></li><li class="navelem"><a class="el" href="dir_1b6f0a484b3a75c2ed43dc394e95eff6.html">detail</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">constants.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="constants_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//constant definitions for the Boost Sort library</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright Steven J. Ross 2001 - 2014</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Distributed under the Boost Software License, Version 1.0.</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// (See accompanying file LICENSE_1_0.txt or copy at</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// See http://www.boost.org/libs/sort for library home page.</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#ifndef BOOST_SORT_SPREADSORT_DETAIL_CONSTANTS</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#define BOOST_SORT_SPREADSORT_DETAIL_CONSTANTS</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"><a class="line" href="namespaceboost.html"> 11</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceboost.html">boost</a> {</div>
<div class="line"><a name="l00012"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort.html"> 12</a></span>&#160;<span class="keyword">namespace </span>sort {</div>
<div class="line"><a name="l00013"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html"> 13</a></span>&#160;<span class="keyword">namespace </span>detail {</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">//Tuning constants</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">//This should be tuned to your processor cache;</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">//if you go too large you get cache misses on bins</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">//The smaller this number, the less worst-case memory usage.</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">//If too small, too many recursions slow down spreadsort</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a17b216febe1b5e8212a80231592fc9d9"> 19</a></span>&#160;<span class="keyword">enum</span> { <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a17b216febe1b5e8212a80231592fc9d9">max_splits</a> = 11,</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//It&#39;s better to have a few cache misses and finish sorting</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//than to run another iteration</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907acfdc43b3d7aa6df69b0f6982918056c7"> 22</a></span>&#160;<a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907acfdc43b3d7aa6df69b0f6982918056c7">max_finishing_splits</a> = <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a17b216febe1b5e8212a80231592fc9d9">max_splits</a> + 1,</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">//Sets the minimum number of items per bin.</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a2e171c91f6c9e1d82643e4b35a4c65de"> 24</a></span>&#160;<a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a2e171c91f6c9e1d82643e4b35a4c65de">int_log_mean_bin_size</a> = 2,</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">//Used to force a comparison-based sorting for small bins, if it&#39;s faster.</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">//Minimum value 1</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a53383c14d73d50ed8faaa695d820a5bf"> 27</a></span>&#160;<a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a53383c14d73d50ed8faaa695d820a5bf">int_log_min_split_count</a> = 9,</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">//This is the minimum split count to use spreadsort when it will finish in one</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">//iteration. Make this larger the faster std::sort is relative to integer_sort.</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907ae0c3ec0c116b92c92015245fd5024a27"> 30</a></span>&#160;<a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907ae0c3ec0c116b92c92015245fd5024a27">int_log_finishing_count</a> = 31,</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment">//Sets the minimum number of items per bin for floating point.</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a0631b5d90d6ff0f1ff5370c616047a33"> 32</a></span>&#160;<a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a0631b5d90d6ff0f1ff5370c616047a33">float_log_mean_bin_size</a> = 2,</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment">//Used to force a comparison-based sorting for small bins, if it&#39;s faster.</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment">//Minimum value 1</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907aa0ee6e920e1d3d09e148ce00a985340c"> 35</a></span>&#160;<a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907aa0ee6e920e1d3d09e148ce00a985340c">float_log_min_split_count</a> = 8,</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment">//This is the minimum split count to use spreadsort when it will finish in one</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment">//iteration. Make this larger the faster std::sort is relative to float_sort.</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a498b754f6198248703d3907562207d28"> 38</a></span>&#160;<a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a498b754f6198248703d3907562207d28">float_log_finishing_count</a> = 4,</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment">//There is a minimum size below which it is not worth using spreadsort</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907aff33660c3058d4e081b7d4353aae659d"> 40</a></span>&#160;<a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907aff33660c3058d4e081b7d4353aae659d">min_sort_size</a> = 1000 };</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;}</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;}</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;}</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="namespaceboost_html"><div class="ttname"><a href="namespaceboost.html">boost</a></div><div class="ttdef"><b>Definition:</b> constants.hpp:11</div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_a7bbd2027f75936442318063f34953907a498b754f6198248703d3907562207d28"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a498b754f6198248703d3907562207d28">boost::sort::detail::float_log_finishing_count</a></div><div class="ttdef"><b>Definition:</b> constants.hpp:38</div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_a7bbd2027f75936442318063f34953907ae0c3ec0c116b92c92015245fd5024a27"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907ae0c3ec0c116b92c92015245fd5024a27">boost::sort::detail::int_log_finishing_count</a></div><div class="ttdef"><b>Definition:</b> constants.hpp:30</div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_a7bbd2027f75936442318063f34953907acfdc43b3d7aa6df69b0f6982918056c7"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907acfdc43b3d7aa6df69b0f6982918056c7">boost::sort::detail::max_finishing_splits</a></div><div class="ttdef"><b>Definition:</b> constants.hpp:22</div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_a7bbd2027f75936442318063f34953907a53383c14d73d50ed8faaa695d820a5bf"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a53383c14d73d50ed8faaa695d820a5bf">boost::sort::detail::int_log_min_split_count</a></div><div class="ttdef"><b>Definition:</b> constants.hpp:27</div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_a7bbd2027f75936442318063f34953907a17b216febe1b5e8212a80231592fc9d9"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a17b216febe1b5e8212a80231592fc9d9">boost::sort::detail::max_splits</a></div><div class="ttdef"><b>Definition:</b> constants.hpp:19</div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_a7bbd2027f75936442318063f34953907aff33660c3058d4e081b7d4353aae659d"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907aff33660c3058d4e081b7d4353aae659d">boost::sort::detail::min_sort_size</a></div><div class="ttdef"><b>Definition:</b> constants.hpp:40</div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_a7bbd2027f75936442318063f34953907a2e171c91f6c9e1d82643e4b35a4c65de"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a2e171c91f6c9e1d82643e4b35a4c65de">boost::sort::detail::int_log_mean_bin_size</a></div><div class="ttdef"><b>Definition:</b> constants.hpp:24</div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_a7bbd2027f75936442318063f34953907aa0ee6e920e1d3d09e148ce00a985340c"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907aa0ee6e920e1d3d09e148ce00a985340c">boost::sort::detail::float_log_min_split_count</a></div><div class="ttdef"><b>Definition:</b> constants.hpp:35</div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_a7bbd2027f75936442318063f34953907a0631b5d90d6ff0f1ff5370c616047a33"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a0631b5d90d6ff0f1ff5370c616047a33">boost::sort::detail::float_log_mean_bin_size</a></div><div class="ttdef"><b>Definition:</b> constants.hpp:32</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 7 2015 17:29:22 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,185 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/include/boost/sort/spreadsort/detail/float_sort.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_1878a3f4746a95c6aad317458cc7ef80.html">boost</a></li><li class="navelem"><a class="el" href="dir_0dcad0da4f36218cbabb216021de9867.html">sort</a></li><li class="navelem"><a class="el" href="dir_4aa236a92b75d6f514e733718a475329.html">spreadsort</a></li><li class="navelem"><a class="el" href="dir_1b6f0a484b3a75c2ed43dc394e95eff6.html">detail</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">float_sort.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;algorithm&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
<code>#include &lt;limits&gt;</code><br />
<code>#include &lt;functional&gt;</code><br />
<code>#include &lt;boost/static_assert.hpp&gt;</code><br />
<code>#include &lt;boost/serialization/static_warning.hpp&gt;</code><br />
<code>#include &lt;boost/utility/enable_if.hpp&gt;</code><br />
<code>#include &lt;<a class="el" href="constants_8hpp_source.html">boost/sort/spreadsort/detail/constants.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="detail_2integer__sort_8hpp_source.html">boost/sort/spreadsort/detail/integer_sort.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="spreadsort__common_8hpp_source.html">boost/sort/spreadsort/detail/spreadsort_common.hpp</a>&gt;</code><br />
<code>#include &lt;boost/cstdint.hpp&gt;</code><br />
</div>
<p><a href="detail_2float__sort_8hpp_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespaceboost"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespaceboost_1_1sort"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort.html">boost::sort</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespaceboost_1_1sort_1_1detail"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort_1_1detail.html">boost::sort::detail</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a8e8308c47bd14eff1c1d0f498289de35"><td class="memTemplParams" colspan="2">template&lt;class Cast_type , class RandomAccessIter &gt; </td></tr>
<tr class="memitem:a8e8308c47bd14eff1c1d0f498289de35"><td class="memTemplItemLeft" align="right" valign="top">Cast_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort_1_1detail.html#a8e8308c47bd14eff1c1d0f498289de35">boost::sort::detail::cast_float_iter</a> (const RandomAccessIter &amp;floatiter)</td></tr>
<tr class="separator:a8e8308c47bd14eff1c1d0f498289de35"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8aaa1645892e6f6845455605b48a5d0e"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Div_type , class Right_shift &gt; </td></tr>
<tr class="memitem:a8aaa1645892e6f6845455605b48a5d0e"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort_1_1detail.html#a8aaa1645892e6f6845455605b48a5d0e">boost::sort::detail::is_sorted_or_find_extremes</a> (RandomAccessIter current, RandomAccessIter last, Div_type &amp;max, Div_type &amp;min, Right_shift rshift)</td></tr>
<tr class="separator:a8aaa1645892e6f6845455605b48a5d0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac04e982cc9f6bcc101f6af6bcd7b36b3"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Div_type &gt; </td></tr>
<tr class="memitem:ac04e982cc9f6bcc101f6af6bcd7b36b3"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort_1_1detail.html#ac04e982cc9f6bcc101f6af6bcd7b36b3">boost::sort::detail::inner_float_swap_loop</a> (RandomAccessIter *bins, const RandomAccessIter &amp;nextbinstart, unsigned ii, const unsigned log_divisor, const Div_type div_min)</td></tr>
<tr class="separator:ac04e982cc9f6bcc101f6af6bcd7b36b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a18fb49752147ebb43503428568323d37"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Div_type &gt; </td></tr>
<tr class="memitem:a18fb49752147ebb43503428568323d37"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort_1_1detail.html#a18fb49752147ebb43503428568323d37">boost::sort::detail::float_swap_loop</a> (RandomAccessIter *bins, RandomAccessIter &amp;nextbinstart, unsigned ii, const size_t *bin_sizes, const unsigned log_divisor, const Div_type div_min)</td></tr>
<tr class="separator:a18fb49752147ebb43503428568323d37"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75e908c58d77dce852027ea90c59ea8e"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Cast_type &gt; </td></tr>
<tr class="memitem:a75e908c58d77dce852027ea90c59ea8e"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort_1_1detail.html#a75e908c58d77dce852027ea90c59ea8e">boost::sort::detail::is_sorted_or_find_extremes</a> (RandomAccessIter current, RandomAccessIter last, Cast_type &amp;max, Cast_type &amp;min)</td></tr>
<tr class="separator:a75e908c58d77dce852027ea90c59ea8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b8a896e29139b047fb1886262d124ab"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Div_type , class Size_type &gt; </td></tr>
<tr class="memitem:a3b8a896e29139b047fb1886262d124ab"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort_1_1detail.html#a3b8a896e29139b047fb1886262d124ab">boost::sort::detail::positive_float_sort_rec</a> (RandomAccessIter first, RandomAccessIter last, std::vector&lt; RandomAccessIter &gt; &amp;bin_cache, unsigned cache_offset, size_t *bin_sizes)</td></tr>
<tr class="separator:a3b8a896e29139b047fb1886262d124ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b85a606f35ef97e23c7f8aed1c655b9"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Div_type , class Size_type &gt; </td></tr>
<tr class="memitem:a6b85a606f35ef97e23c7f8aed1c655b9"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort_1_1detail.html#a6b85a606f35ef97e23c7f8aed1c655b9">boost::sort::detail::negative_float_sort_rec</a> (RandomAccessIter first, RandomAccessIter last, std::vector&lt; RandomAccessIter &gt; &amp;bin_cache, unsigned cache_offset, size_t *bin_sizes)</td></tr>
<tr class="separator:a6b85a606f35ef97e23c7f8aed1c655b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7cc04cc70debc73a6bdbde6552b556c"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Div_type , class Right_shift , class Size_type &gt; </td></tr>
<tr class="memitem:af7cc04cc70debc73a6bdbde6552b556c"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort_1_1detail.html#af7cc04cc70debc73a6bdbde6552b556c">boost::sort::detail::negative_float_sort_rec</a> (RandomAccessIter first, RandomAccessIter last, std::vector&lt; RandomAccessIter &gt; &amp;bin_cache, unsigned cache_offset, size_t *bin_sizes, Right_shift rshift)</td></tr>
<tr class="separator:af7cc04cc70debc73a6bdbde6552b556c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3936c51da0154af6003bc491b542fa12"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Div_type , class Right_shift , class Compare , class Size_type &gt; </td></tr>
<tr class="memitem:a3936c51da0154af6003bc491b542fa12"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort_1_1detail.html#a3936c51da0154af6003bc491b542fa12">boost::sort::detail::negative_float_sort_rec</a> (RandomAccessIter first, RandomAccessIter last, std::vector&lt; RandomAccessIter &gt; &amp;bin_cache, unsigned cache_offset, size_t *bin_sizes, Right_shift rshift, Compare comp)</td></tr>
<tr class="separator:a3936c51da0154af6003bc491b542fa12"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1faa4283ebb64ba23c4a73c1c0a6548a"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Div_type , class Size_type &gt; </td></tr>
<tr class="memitem:a1faa4283ebb64ba23c4a73c1c0a6548a"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort_1_1detail.html#a1faa4283ebb64ba23c4a73c1c0a6548a">boost::sort::detail::float_sort_rec</a> (RandomAccessIter first, RandomAccessIter last, std::vector&lt; RandomAccessIter &gt; &amp;bin_cache, unsigned cache_offset, size_t *bin_sizes)</td></tr>
<tr class="separator:a1faa4283ebb64ba23c4a73c1c0a6548a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a85d8622f809c9c5ee535890de4aa9ff3"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Div_type , class Right_shift , class Size_type &gt; </td></tr>
<tr class="memitem:a85d8622f809c9c5ee535890de4aa9ff3"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort_1_1detail.html#a85d8622f809c9c5ee535890de4aa9ff3">boost::sort::detail::float_sort_rec</a> (RandomAccessIter first, RandomAccessIter last, std::vector&lt; RandomAccessIter &gt; &amp;bin_cache, unsigned cache_offset, size_t *bin_sizes, Right_shift rshift)</td></tr>
<tr class="separator:a85d8622f809c9c5ee535890de4aa9ff3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b984ddce7638d78d26ea22cea08f2e7"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Div_type , class Right_shift , class Compare , class Size_type &gt; </td></tr>
<tr class="memitem:a7b984ddce7638d78d26ea22cea08f2e7"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort_1_1detail.html#a7b984ddce7638d78d26ea22cea08f2e7">boost::sort::detail::float_sort_rec</a> (RandomAccessIter first, RandomAccessIter last, std::vector&lt; RandomAccessIter &gt; &amp;bin_cache, unsigned cache_offset, size_t *bin_sizes, Right_shift rshift, Compare comp)</td></tr>
<tr class="separator:a7b984ddce7638d78d26ea22cea08f2e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa66aec0efcc4f4a7f5584886e93444b"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter &gt; </td></tr>
<tr class="memitem:aaa66aec0efcc4f4a7f5584886e93444b"><td class="memTemplItemLeft" align="right" valign="top">boost::enable_if_c&lt; sizeof(boost::uint32_t)==sizeof(typename std::iterator_traits&lt; RandomAccessIter &gt;::value_type)&amp;&amp;std::numeric_limits&lt; typename std::iterator_traits&lt; RandomAccessIter &gt;::value_type &gt;::is_iec559, void &gt;::type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort_1_1detail.html#aaa66aec0efcc4f4a7f5584886e93444b">boost::sort::detail::float_sort</a> (RandomAccessIter first, RandomAccessIter last)</td></tr>
<tr class="separator:aaa66aec0efcc4f4a7f5584886e93444b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9667055e88a8492bac9cd1b14cc86e0"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter &gt; </td></tr>
<tr class="memitem:aa9667055e88a8492bac9cd1b14cc86e0"><td class="memTemplItemLeft" align="right" valign="top">boost::enable_if_c&lt; sizeof(boost::uint64_t)==sizeof(typename std::iterator_traits&lt; RandomAccessIter &gt;::value_type)&amp;&amp;std::numeric_limits&lt; typename std::iterator_traits&lt; RandomAccessIter &gt;::value_type &gt;::is_iec559, void &gt;::type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort_1_1detail.html#aa9667055e88a8492bac9cd1b14cc86e0">boost::sort::detail::float_sort</a> (RandomAccessIter first, RandomAccessIter last)</td></tr>
<tr class="separator:aa9667055e88a8492bac9cd1b14cc86e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a298f19036e85ffc74dbe92d2c26eae77"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter &gt; </td></tr>
<tr class="memitem:a298f19036e85ffc74dbe92d2c26eae77"><td class="memTemplItemLeft" align="right" valign="top">boost::disable_if_c&lt; (sizeof(boost::uint64_t)==sizeof(typename std::iterator_traits&lt; RandomAccessIter &gt;::value_type)||sizeof(boost::uint32_t)==sizeof(typename std::iterator_traits&lt; RandomAccessIter &gt;::value_type))&amp;&amp;std::numeric_limits&lt; typename std::iterator_traits&lt; RandomAccessIter &gt;::value_type &gt;::is_iec559, void &gt;::type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort_1_1detail.html#a298f19036e85ffc74dbe92d2c26eae77">boost::sort::detail::float_sort</a> (RandomAccessIter first, RandomAccessIter last)</td></tr>
<tr class="separator:a298f19036e85ffc74dbe92d2c26eae77"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a22be02c948faa1f93e4dbb58b03b6e42"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Div_type , class Right_shift &gt; </td></tr>
<tr class="memitem:a22be02c948faa1f93e4dbb58b03b6e42"><td class="memTemplItemLeft" align="right" valign="top">void::type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort_1_1detail.html#a22be02c948faa1f93e4dbb58b03b6e42">boost::sort::detail::float_sort</a> (RandomAccessIter first, RandomAccessIter last, Div_type, Right_shift rshift)</td></tr>
<tr class="separator:a22be02c948faa1f93e4dbb58b03b6e42"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5e85811e357edf81ed621e25407b3256"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Div_type , class Right_shift &gt; </td></tr>
<tr class="memitem:a5e85811e357edf81ed621e25407b3256"><td class="memTemplItemLeft" align="right" valign="top">boost::enable_if_c&lt; sizeof(size_t)&lt; sizeof(Div_type)&amp;&amp;sizeof(boost::uintmax_t) &gt;=sizeof(Div_type), void &gt;::type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort_1_1detail.html#a5e85811e357edf81ed621e25407b3256">boost::sort::detail::float_sort</a> (RandomAccessIter first, RandomAccessIter last, Div_type, Right_shift rshift)</td></tr>
<tr class="separator:a5e85811e357edf81ed621e25407b3256"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a23494fbb0eadd6a979f0b6c9fc19ea61"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Div_type , class Right_shift , class Compare &gt; </td></tr>
<tr class="memitem:a23494fbb0eadd6a979f0b6c9fc19ea61"><td class="memTemplItemLeft" align="right" valign="top">void::type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort_1_1detail.html#a23494fbb0eadd6a979f0b6c9fc19ea61">boost::sort::detail::float_sort</a> (RandomAccessIter first, RandomAccessIter last, Div_type, Right_shift rshift, Compare comp)</td></tr>
<tr class="separator:a23494fbb0eadd6a979f0b6c9fc19ea61"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad73450f75077d802111a93f66e24a4bc"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Div_type , class Right_shift , class Compare &gt; </td></tr>
<tr class="memitem:ad73450f75077d802111a93f66e24a4bc"><td class="memTemplItemLeft" align="right" valign="top">boost::enable_if_c&lt; sizeof(size_t)&lt; sizeof(Div_type)&amp;&amp;sizeof(boost::uintmax_t) &gt;=sizeof(Div_type), void &gt;::type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort_1_1detail.html#ad73450f75077d802111a93f66e24a4bc">boost::sort::detail::float_sort</a> (RandomAccessIter first, RandomAccessIter last, Div_type, Right_shift rshift, Compare comp)</td></tr>
<tr class="separator:ad73450f75077d802111a93f66e24a4bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 7 2015 17:29:22 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,922 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/include/boost/sort/spreadsort/detail/float_sort.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_1878a3f4746a95c6aad317458cc7ef80.html">boost</a></li><li class="navelem"><a class="el" href="dir_0dcad0da4f36218cbabb216021de9867.html">sort</a></li><li class="navelem"><a class="el" href="dir_4aa236a92b75d6f514e733718a475329.html">spreadsort</a></li><li class="navelem"><a class="el" href="dir_1b6f0a484b3a75c2ed43dc394e95eff6.html">detail</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">float_sort.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="detail_2float__sort_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Details for templated Spreadsort-based float_sort.</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright Steven J. Ross 2001 - 2014.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Distributed under the Boost Software License, Version 1.0.</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// (See accompanying file LICENSE_1_0.txt or copy at</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// See http://www.boost.org/libs/sort for library home page.</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">Some improvements suggested by:</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">Phil Endecott and Frank Gennari</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">float_mem_cast fix provided by:</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">Scott McMurray</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#ifndef BOOST_SORT_SPREADSORT_DETAIL_FLOAT_SORT_HPP</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#define BOOST_SORT_SPREADSORT_DETAIL_FLOAT_SORT_HPP</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &lt;limits&gt;</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;functional&gt;</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &lt;boost/static_assert.hpp&gt;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &lt;boost/serialization/static_warning.hpp&gt;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;boost/utility/enable_if.hpp&gt;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="constants_8hpp.html">boost/sort/spreadsort/detail/constants.hpp</a>&gt;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="detail_2integer__sort_8hpp.html">boost/sort/spreadsort/detail/integer_sort.hpp</a>&gt;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="spreadsort__common_8hpp.html">boost/sort/spreadsort/detail/spreadsort_common.hpp</a>&gt;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &lt;boost/cstdint.hpp&gt;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceboost.html">boost</a> {</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keyword">namespace </span>sort {</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">namespace </span>detail {</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="comment">//Casts a RandomAccessIter to the specified integer type</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> Cast_type, <span class="keyword">class</span> RandomAccessIter&gt;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">inline</span> Cast_type</div>
<div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#a8e8308c47bd14eff1c1d0f498289de35"> 37</a></span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a8e8308c47bd14eff1c1d0f498289de35">cast_float_iter</a>(<span class="keyword">const</span> RandomAccessIter &amp; floatiter)</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; {</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> std::iterator_traits&lt;RandomAccessIter&gt;::value_type</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; Data_type;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="comment">//Only cast IEEE floating-point numbers, and only to same-sized integers</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; BOOST_STATIC_ASSERT(<span class="keyword">sizeof</span>(Cast_type) == <span class="keyword">sizeof</span>(Data_type));</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; BOOST_STATIC_ASSERT(std::numeric_limits&lt;Data_type&gt;::is_iec559);</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; BOOST_STATIC_ASSERT(std::numeric_limits&lt;Cast_type&gt;::is_integer);</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; Cast_type result;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; std::memcpy(&amp;result, &amp;(*floatiter), <span class="keyword">sizeof</span>(Data_type));</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; }</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="comment">// Return true if the list is sorted. Otherwise, find the minimum and</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="comment">// maximum. Values are Right_shifted 0 bits before comparison.</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Div_type, <span class="keyword">class</span> Right_shift&gt;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#a8aaa1645892e6f6845455605b48a5d0e"> 54</a></span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a8aaa1645892e6f6845455605b48a5d0e">is_sorted_or_find_extremes</a>(RandomAccessIter current, RandomAccessIter last,</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; Div_type &amp; max, Div_type &amp; min, Right_shift rshift)</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; {</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; min = max = rshift(*current, 0);</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; Div_type prev = min;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordtype">bool</span> sorted = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">while</span> (++current &lt; last) {</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; Div_type value = rshift(*current, 0);</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; sorted &amp;= value &gt;= prev;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; prev = value;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">if</span> (max &lt; value)</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; max = value;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (value &lt; min)</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; min = value;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">return</span> sorted;</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; }</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="comment">//Specialized swap loops for floating-point casting</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Div_type&gt;</div>
<div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#ac04e982cc9f6bcc101f6af6bcd7b36b3"> 74</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1sort_1_1detail.html#ac04e982cc9f6bcc101f6af6bcd7b36b3">inner_float_swap_loop</a>(RandomAccessIter * bins,</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">const</span> RandomAccessIter &amp; nextbinstart, <span class="keywordtype">unsigned</span> ii</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; , <span class="keyword">const</span> <span class="keywordtype">unsigned</span> log_divisor, <span class="keyword">const</span> Div_type div_min)</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; RandomAccessIter * local_bin = bins + ii;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">for</span> (RandomAccessIter current = *local_bin; current &lt; nextbinstart;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; ++current) {</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">for</span> (RandomAccessIter * target_bin =</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; (bins + ((cast_float_iter&lt;Div_type, RandomAccessIter&gt;(current) &gt;&gt;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; log_divisor) - div_min)); target_bin != local_bin;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; target_bin = bins + ((cast_float_iter&lt;Div_type, RandomAccessIter&gt;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; (current) &gt;&gt; log_divisor) - div_min)) {</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keyword">typename</span> std::iterator_traits&lt;RandomAccessIter&gt;::value_type tmp;</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; RandomAccessIter b = (*target_bin)++;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; RandomAccessIter * b_bin = bins + ((<a class="code" href="namespaceboost_1_1sort_1_1detail.html#a8e8308c47bd14eff1c1d0f498289de35">cast_float_iter</a>&lt;Div_type,</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; RandomAccessIter&gt;(b) &gt;&gt; log_divisor) - div_min);</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="comment">//Three-way swap; if the item to be swapped doesn&#39;t belong in the</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="comment">//current bin, swap it to where it belongs</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">if</span> (b_bin != local_bin) {</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; RandomAccessIter c = (*b_bin)++;</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; tmp = *c;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; *c = *b;</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; tmp = *b;</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; *b = *current;</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; *current = tmp;</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; *local_bin = nextbinstart;</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; }</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Div_type&gt;</div>
<div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#a18fb49752147ebb43503428568323d37"> 107</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a18fb49752147ebb43503428568323d37">float_swap_loop</a>(RandomAccessIter * bins,</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; RandomAccessIter &amp; nextbinstart, <span class="keywordtype">unsigned</span> ii,</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> *bin_sizes,</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> log_divisor, <span class="keyword">const</span> Div_type div_min)</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; {</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; nextbinstart += bin_sizes[ii];</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; inner_float_swap_loop&lt;RandomAccessIter, Div_type&gt;</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; (bins, nextbinstart, ii, log_divisor, div_min);</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="comment">// Return true if the list is sorted. Otherwise, find the minimum and</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="comment">// maximum. Values are cast to Cast_type before comparison.</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Cast_type&gt;</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#a75e908c58d77dce852027ea90c59ea8e"> 121</a></span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a8aaa1645892e6f6845455605b48a5d0e">is_sorted_or_find_extremes</a>(RandomAccessIter current, RandomAccessIter last,</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; Cast_type &amp; max, Cast_type &amp; min)</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; {</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; min = max = cast_float_iter&lt;Cast_type, RandomAccessIter&gt;(current);</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; Cast_type prev = min;</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordtype">bool</span> sorted = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">while</span> (++current &lt; last) {</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; Cast_type value = cast_float_iter&lt;Cast_type, RandomAccessIter&gt;(current);</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; sorted &amp;= value &gt;= prev;</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; prev = value;</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">if</span> (max &lt; value)</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; max = value;</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (value &lt; min)</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; min = value;</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">return</span> sorted;</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="comment">//Special-case sorting of positive floats with casting</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Div_type, <span class="keyword">class</span> Size_type&gt;</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#a3b8a896e29139b047fb1886262d124ab"> 142</a></span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a3b8a896e29139b047fb1886262d124ab">positive_float_sort_rec</a>(RandomAccessIter first, RandomAccessIter last,</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; std::vector&lt;RandomAccessIter&gt; &amp;bin_cache, <span class="keywordtype">unsigned</span> cache_offset</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; , <span class="keywordtype">size_t</span> *bin_sizes)</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; {</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; Div_type max, min;</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">if</span> (is_sorted_or_find_extremes&lt;RandomAccessIter, Div_type&gt;(first, last, </div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; max, min))</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordtype">unsigned</span> log_divisor = get_log_divisor&lt;float_log_mean_bin_size&gt;(</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; last - first, <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a852a51cde62aa67347cb9b4a7350bbac">rough_log_2_size</a>(Size_type(max - min)));</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; Div_type div_min = min &gt;&gt; log_divisor;</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; Div_type div_max = max &gt;&gt; log_divisor;</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordtype">unsigned</span> bin_count = unsigned(div_max - div_min) + 1;</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordtype">unsigned</span> cache_end;</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; RandomAccessIter * bins = <a class="code" href="namespaceboost_1_1sort_1_1detail.html#ad5b7d31fba809eae5d17f5c2fb0a385b">size_bins</a>(bin_sizes, bin_cache, cache_offset,</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; cache_end, bin_count);</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="comment">//Calculating the size of each bin</span></div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">for</span> (RandomAccessIter current = first; current != last;)</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; bin_sizes[<span class="keywordtype">unsigned</span>((cast_float_iter&lt;Div_type, RandomAccessIter&gt;(</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; current++) &gt;&gt; log_divisor) - div_min)]++;</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; bins[0] = first;</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = 0; u &lt; bin_count - 1; u++)</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; bins[u + 1] = bins[u] + bin_sizes[u];</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="comment">//Swap into place</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; RandomAccessIter nextbinstart = first;</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = 0; u &lt; bin_count - 1; ++u)</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; float_swap_loop&lt;RandomAccessIter, Div_type&gt;</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; (bins, nextbinstart, u, bin_sizes, log_divisor, div_min);</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; bins[bin_count - 1] = last;</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="comment">//Return if we&#39;ve completed bucketsorting</span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">if</span> (!log_divisor)</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="comment">//Recursing</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordtype">size_t</span> max_count = <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a4ba5c57512d16f300c08b7a6b4e6ff23">get_min_count</a>&lt;<a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a0631b5d90d6ff0f1ff5370c616047a33">float_log_mean_bin_size</a>,</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907aa0ee6e920e1d3d09e148ce00a985340c">float_log_min_split_count</a>,</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a498b754f6198248703d3907562207d28">float_log_finishing_count</a>&gt;(log_divisor);</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; RandomAccessIter lastPos = first;</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = cache_offset; u &lt; cache_end; lastPos = bin_cache[u],</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; ++u) {</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordtype">size_t</span> count = bin_cache[u] - lastPos;</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">if</span> (count &lt; 2)</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">if</span> (count &lt; max_count)</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; std::sort(lastPos, bin_cache[u]);</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; positive_float_sort_rec&lt;RandomAccessIter, Div_type, Size_type&gt;</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; (lastPos, bin_cache[u], bin_cache, cache_end, bin_sizes);</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; }</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; }</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="comment">//Sorting negative floats</span></div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="comment">//Bins are iterated in reverse because max_neg_float = min_neg_int</span></div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Div_type, <span class="keyword">class</span> Size_type&gt;</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#a6b85a606f35ef97e23c7f8aed1c655b9"> 201</a></span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a6b85a606f35ef97e23c7f8aed1c655b9">negative_float_sort_rec</a>(RandomAccessIter first, RandomAccessIter last,</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; std::vector&lt;RandomAccessIter&gt; &amp;bin_cache,</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordtype">unsigned</span> cache_offset, <span class="keywordtype">size_t</span> *bin_sizes)</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; {</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; Div_type max, min;</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">if</span> (is_sorted_or_find_extremes&lt;RandomAccessIter, Div_type&gt;(first, last, </div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; max, min))</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordtype">unsigned</span> log_divisor = get_log_divisor&lt;float_log_mean_bin_size&gt;(</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; last - first, <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a852a51cde62aa67347cb9b4a7350bbac">rough_log_2_size</a>(Size_type(max - min)));</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; Div_type div_min = min &gt;&gt; log_divisor;</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; Div_type div_max = max &gt;&gt; log_divisor;</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordtype">unsigned</span> bin_count = unsigned(div_max - div_min) + 1;</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordtype">unsigned</span> cache_end;</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; RandomAccessIter * bins = <a class="code" href="namespaceboost_1_1sort_1_1detail.html#ad5b7d31fba809eae5d17f5c2fb0a385b">size_bins</a>(bin_sizes, bin_cache, cache_offset,</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; cache_end, bin_count);</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="comment">//Calculating the size of each bin</span></div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">for</span> (RandomAccessIter current = first; current != last;)</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; bin_sizes[<span class="keywordtype">unsigned</span>((cast_float_iter&lt;Div_type, RandomAccessIter&gt;(</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; current++) &gt;&gt; log_divisor) - div_min)]++;</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; bins[bin_count - 1] = first;</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ii = bin_count - 2; ii &gt;= 0; --ii)</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; bins[ii] = bins[ii + 1] + bin_sizes[ii + 1];</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="comment">//Swap into place</span></div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; RandomAccessIter nextbinstart = first;</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="comment">//The last bin will always have the correct elements in it</span></div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ii = bin_count - 1; ii &gt; 0; --ii)</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; float_swap_loop&lt;RandomAccessIter, Div_type&gt;</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; (bins, nextbinstart, ii, bin_sizes, log_divisor, div_min);</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="comment">//Update the end position because we don&#39;t process the last bin</span></div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; bin_cache[cache_offset] = last;</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="comment">//Return if we&#39;ve completed bucketsorting</span></div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">if</span> (!log_divisor)</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="comment">//Recursing</span></div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordtype">size_t</span> max_count = <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a4ba5c57512d16f300c08b7a6b4e6ff23">get_min_count</a>&lt;<a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a0631b5d90d6ff0f1ff5370c616047a33">float_log_mean_bin_size</a>,</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907aa0ee6e920e1d3d09e148ce00a985340c">float_log_min_split_count</a>,</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a498b754f6198248703d3907562207d28">float_log_finishing_count</a>&gt;(log_divisor);</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; RandomAccessIter lastPos = first;</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ii = cache_end - 1; ii &gt;= <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(cache_offset);</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; lastPos = bin_cache[ii], --ii) {</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordtype">size_t</span> count = bin_cache[ii] - lastPos;</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">if</span> (count &lt; 2)</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">if</span> (count &lt; max_count)</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; std::sort(lastPos, bin_cache[ii]);</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; negative_float_sort_rec&lt;RandomAccessIter, Div_type, Size_type&gt;</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; (lastPos, bin_cache[ii], bin_cache, cache_end, bin_sizes);</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; }</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; }</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="comment">//Sorting negative floats</span></div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="comment">//Bins are iterated in reverse order because max_neg_float = min_neg_int</span></div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>RandomAccessIter, <span class="keyword">class </span>Div_type, <span class="keyword">class </span>Right_shift,</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keyword">class </span>Size_type&gt;</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00262"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#af7cc04cc70debc73a6bdbde6552b556c"> 262</a></span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a6b85a606f35ef97e23c7f8aed1c655b9">negative_float_sort_rec</a>(RandomAccessIter first, RandomAccessIter last,</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; std::vector&lt;RandomAccessIter&gt; &amp;bin_cache, <span class="keywordtype">unsigned</span> cache_offset</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; , <span class="keywordtype">size_t</span> *bin_sizes, Right_shift rshift)</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; {</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; Div_type max, min;</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1sort_1_1detail.html#a8aaa1645892e6f6845455605b48a5d0e">is_sorted_or_find_extremes</a>(first, last, max, min, rshift))</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordtype">unsigned</span> log_divisor = get_log_divisor&lt;float_log_mean_bin_size&gt;(</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; last - first, <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a852a51cde62aa67347cb9b4a7350bbac">rough_log_2_size</a>(Size_type(max - min)));</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; Div_type div_min = min &gt;&gt; log_divisor;</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; Div_type div_max = max &gt;&gt; log_divisor;</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordtype">unsigned</span> bin_count = unsigned(div_max - div_min) + 1;</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordtype">unsigned</span> cache_end;</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; RandomAccessIter * bins = <a class="code" href="namespaceboost_1_1sort_1_1detail.html#ad5b7d31fba809eae5d17f5c2fb0a385b">size_bins</a>(bin_sizes, bin_cache, cache_offset,</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; cache_end, bin_count);</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="comment">//Calculating the size of each bin</span></div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">for</span> (RandomAccessIter current = first; current != last;)</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; bin_sizes[<span class="keywordtype">unsigned</span>(rshift(*(current++), log_divisor) - div_min)]++;</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; bins[bin_count - 1] = first;</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ii = bin_count - 2; ii &gt;= 0; --ii)</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; bins[ii] = bins[ii + 1] + bin_sizes[ii + 1];</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="comment">//Swap into place</span></div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; RandomAccessIter nextbinstart = first;</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="comment">//The last bin will always have the correct elements in it</span></div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ii = bin_count - 1; ii &gt; 0; --ii)</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; swap_loop&lt;RandomAccessIter, Div_type, Right_shift&gt;</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; (bins, nextbinstart, ii, rshift, bin_sizes, log_divisor, div_min);</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="comment">//Update the end position of the unprocessed last bin</span></div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; bin_cache[cache_offset] = last;</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="comment">//Return if we&#39;ve completed bucketsorting</span></div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">if</span> (!log_divisor)</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="comment">//Recursing</span></div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordtype">size_t</span> max_count = <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a4ba5c57512d16f300c08b7a6b4e6ff23">get_min_count</a>&lt;<a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a0631b5d90d6ff0f1ff5370c616047a33">float_log_mean_bin_size</a>,</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907aa0ee6e920e1d3d09e148ce00a985340c">float_log_min_split_count</a>,</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a498b754f6198248703d3907562207d28">float_log_finishing_count</a>&gt;(log_divisor);</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; RandomAccessIter lastPos = first;</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ii = cache_end - 1; ii &gt;= <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(cache_offset);</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; lastPos = bin_cache[ii], --ii) {</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordtype">size_t</span> count = bin_cache[ii] - lastPos;</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">if</span> (count &lt; 2)</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">if</span> (count &lt; max_count)</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; std::sort(lastPos, bin_cache[ii]);</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a6b85a606f35ef97e23c7f8aed1c655b9">negative_float_sort_rec</a>&lt;RandomAccessIter, Div_type, Right_shift,</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; Size_type&gt;</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; (lastPos, bin_cache[ii], bin_cache, cache_end, bin_sizes, rshift);</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; }</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; }</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>RandomAccessIter, <span class="keyword">class </span>Div_type, <span class="keyword">class </span>Right_shift,</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keyword">class </span>Compare, <span class="keyword">class </span>Size_type&gt;</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00320"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#a3936c51da0154af6003bc491b542fa12"> 320</a></span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a6b85a606f35ef97e23c7f8aed1c655b9">negative_float_sort_rec</a>(RandomAccessIter first, RandomAccessIter last,</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; std::vector&lt;RandomAccessIter&gt; &amp;bin_cache, <span class="keywordtype">unsigned</span> cache_offset,</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordtype">size_t</span> *bin_sizes, Right_shift rshift, Compare comp)</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; {</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; Div_type max, min;</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1sort_1_1detail.html#a8aaa1645892e6f6845455605b48a5d0e">is_sorted_or_find_extremes</a>(first, last, max, min, rshift))</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordtype">unsigned</span> log_divisor = get_log_divisor&lt;float_log_mean_bin_size&gt;(</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; last - first, <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a852a51cde62aa67347cb9b4a7350bbac">rough_log_2_size</a>(Size_type(max - min)));</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; Div_type div_min = min &gt;&gt; log_divisor;</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; Div_type div_max = max &gt;&gt; log_divisor;</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordtype">unsigned</span> bin_count = unsigned(div_max - div_min) + 1;</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordtype">unsigned</span> cache_end;</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; RandomAccessIter * bins = <a class="code" href="namespaceboost_1_1sort_1_1detail.html#ad5b7d31fba809eae5d17f5c2fb0a385b">size_bins</a>(bin_sizes, bin_cache, cache_offset,</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; cache_end, bin_count);</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="comment">//Calculating the size of each bin</span></div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">for</span> (RandomAccessIter current = first; current != last;)</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; bin_sizes[<span class="keywordtype">unsigned</span>(rshift(*(current++), log_divisor) - div_min)]++;</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; bins[bin_count - 1] = first;</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ii = bin_count - 2; ii &gt;= 0; --ii)</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; bins[ii] = bins[ii + 1] + bin_sizes[ii + 1];</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="comment">//Swap into place</span></div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; RandomAccessIter nextbinstart = first;</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="comment">//The last bin will always have the correct elements in it</span></div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ii = bin_count - 1; ii &gt; 0; --ii)</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; swap_loop&lt;RandomAccessIter, Div_type, Right_shift&gt;</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; (bins, nextbinstart, ii, rshift, bin_sizes, log_divisor, div_min);</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="comment">//Update the end position of the unprocessed last bin</span></div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; bin_cache[cache_offset] = last;</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="comment">//Return if we&#39;ve completed bucketsorting</span></div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">if</span> (!log_divisor)</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="comment">//Recursing</span></div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordtype">size_t</span> max_count = <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a4ba5c57512d16f300c08b7a6b4e6ff23">get_min_count</a>&lt;<a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a0631b5d90d6ff0f1ff5370c616047a33">float_log_mean_bin_size</a>,</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907aa0ee6e920e1d3d09e148ce00a985340c">float_log_min_split_count</a>,</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a498b754f6198248703d3907562207d28">float_log_finishing_count</a>&gt;(log_divisor);</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; RandomAccessIter lastPos = first;</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ii = cache_end - 1; ii &gt;= <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(cache_offset);</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; lastPos = bin_cache[ii], --ii) {</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordtype">size_t</span> count = bin_cache[ii] - lastPos;</div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keywordflow">if</span> (count &lt; 2)</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">if</span> (count &lt; max_count)</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; std::sort(lastPos, bin_cache[ii], comp);</div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a6b85a606f35ef97e23c7f8aed1c655b9">negative_float_sort_rec</a>&lt;RandomAccessIter, Div_type, Right_shift,</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; Compare, Size_type&gt;(lastPos, bin_cache[ii],</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; bin_cache, cache_end,</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; bin_sizes, rshift, comp);</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; }</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; }</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="comment">//Casting special-case for floating-point sorting</span></div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Div_type, <span class="keyword">class</span> Size_type&gt;</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00379"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#a1faa4283ebb64ba23c4a73c1c0a6548a"> 379</a></span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a1faa4283ebb64ba23c4a73c1c0a6548a">float_sort_rec</a>(RandomAccessIter first, RandomAccessIter last,</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; std::vector&lt;RandomAccessIter&gt; &amp;bin_cache, <span class="keywordtype">unsigned</span> cache_offset</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; , <span class="keywordtype">size_t</span> *bin_sizes)</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; {</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; Div_type max, min;</div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">if</span> (is_sorted_or_find_extremes&lt;RandomAccessIter, Div_type&gt;(first, last, </div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; max, min))</div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordtype">unsigned</span> log_divisor = get_log_divisor&lt;float_log_mean_bin_size&gt;(</div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; last - first, <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a852a51cde62aa67347cb9b4a7350bbac">rough_log_2_size</a>(Size_type(max - min)));</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; Div_type div_min = min &gt;&gt; log_divisor;</div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; Div_type div_max = max &gt;&gt; log_divisor;</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordtype">unsigned</span> bin_count = unsigned(div_max - div_min) + 1;</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordtype">unsigned</span> cache_end;</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; RandomAccessIter * bins = <a class="code" href="namespaceboost_1_1sort_1_1detail.html#ad5b7d31fba809eae5d17f5c2fb0a385b">size_bins</a>(bin_sizes, bin_cache, cache_offset,</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; cache_end, bin_count);</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="comment">//Calculating the size of each bin</span></div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">for</span> (RandomAccessIter current = first; current != last;)</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; bin_sizes[<span class="keywordtype">unsigned</span>((cast_float_iter&lt;Div_type, RandomAccessIter&gt;(</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; current++) &gt;&gt; log_divisor) - div_min)]++;</div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="comment">//The index of the first positive bin</span></div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="comment">//Must be divided small enough to fit into an integer</span></div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordtype">unsigned</span> first_positive = (div_min &lt; 0) ? <span class="keywordtype">unsigned</span>(-div_min) : 0;</div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="comment">//Resetting if all bins are negative</span></div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordflow">if</span> (cache_offset + first_positive &gt; cache_end)</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; first_positive = cache_end - cache_offset;</div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="comment">//Reversing the order of the negative bins</span></div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="comment">//Note that because of the negative/positive ordering direction flip</span></div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="comment">//We can not depend upon bin order and positions matching up</span></div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="comment">//so bin_sizes must be reused to contain the end of the bin</span></div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">if</span> (first_positive &gt; 0) {</div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; bins[first_positive - 1] = first;</div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ii = first_positive - 2; ii &gt;= 0; --ii) {</div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; bins[ii] = first + bin_sizes[ii + 1];</div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; bin_sizes[ii] += bin_sizes[ii + 1];</div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; }</div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="comment">//Handling positives following negatives</span></div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">if</span> (first_positive &lt; bin_count) {</div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; bins[first_positive] = first + bin_sizes[0];</div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; bin_sizes[first_positive] += bin_sizes[0];</div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; }</div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; }</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; bins[0] = first;</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = first_positive; u &lt; bin_count - 1; u++) {</div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; bins[u + 1] = first + bin_sizes[u];</div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; bin_sizes[u + 1] += bin_sizes[u];</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; }</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;</div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="comment">//Swap into place</span></div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; RandomAccessIter nextbinstart = first;</div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = 0; u &lt; bin_count; ++u) {</div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; nextbinstart = first + bin_sizes[u];</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; inner_float_swap_loop&lt;RandomAccessIter, Div_type&gt;</div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; (bins, nextbinstart, u, log_divisor, div_min);</div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; }</div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;</div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">if</span> (!log_divisor)</div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;</div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="comment">//Handling negative values first</span></div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordtype">size_t</span> max_count = <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a4ba5c57512d16f300c08b7a6b4e6ff23">get_min_count</a>&lt;<a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a0631b5d90d6ff0f1ff5370c616047a33">float_log_mean_bin_size</a>,</div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907aa0ee6e920e1d3d09e148ce00a985340c">float_log_min_split_count</a>,</div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a498b754f6198248703d3907562207d28">float_log_finishing_count</a>&gt;(log_divisor);</div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; RandomAccessIter lastPos = first;</div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ii = cache_offset + first_positive - 1; </div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; ii &gt;= <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(cache_offset);</div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; lastPos = bin_cache[ii--]) {</div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keywordtype">size_t</span> count = bin_cache[ii] - lastPos;</div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">if</span> (count &lt; 2)</div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">if</span> (count &lt; max_count)</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; std::sort(lastPos, bin_cache[ii]);</div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="comment">//sort negative values using reversed-bin spreadsort</span></div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; negative_float_sort_rec&lt;RandomAccessIter, Div_type, Size_type&gt;</div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; (lastPos, bin_cache[ii], bin_cache, cache_end, bin_sizes);</div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; }</div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;</div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = cache_offset + first_positive; u &lt; cache_end;</div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; lastPos = bin_cache[u], ++u) {</div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordtype">size_t</span> count = bin_cache[u] - lastPos;</div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">if</span> (count &lt; 2)</div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keywordflow">if</span> (count &lt; max_count)</div>
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; std::sort(lastPos, bin_cache[u]);</div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="comment">//sort positive values using normal spreadsort</span></div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; positive_float_sort_rec&lt;RandomAccessIter, Div_type, Size_type&gt;</div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; (lastPos, bin_cache[u], bin_cache, cache_end, bin_sizes);</div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; }</div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; }</div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;</div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="comment">//Functor implementation for recursive sorting</span></div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>RandomAccessIter, <span class="keyword">class </span>Div_type, <span class="keyword">class </span>Right_shift</div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; , <span class="keyword">class </span>Size_type&gt;</div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00477"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#a85d8622f809c9c5ee535890de4aa9ff3"> 477</a></span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a1faa4283ebb64ba23c4a73c1c0a6548a">float_sort_rec</a>(RandomAccessIter first, RandomAccessIter last,</div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; std::vector&lt;RandomAccessIter&gt; &amp;bin_cache, <span class="keywordtype">unsigned</span> cache_offset</div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; , <span class="keywordtype">size_t</span> *bin_sizes, Right_shift rshift)</div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; {</div>
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; Div_type max, min;</div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1sort_1_1detail.html#a8aaa1645892e6f6845455605b48a5d0e">is_sorted_or_find_extremes</a>(first, last, max, min, rshift))</div>
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordtype">unsigned</span> log_divisor = get_log_divisor&lt;float_log_mean_bin_size&gt;(</div>
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; last - first, <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a852a51cde62aa67347cb9b4a7350bbac">rough_log_2_size</a>(Size_type(max - min)));</div>
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; Div_type div_min = min &gt;&gt; log_divisor;</div>
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; Div_type div_max = max &gt;&gt; log_divisor;</div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordtype">unsigned</span> bin_count = unsigned(div_max - div_min) + 1;</div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keywordtype">unsigned</span> cache_end;</div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; RandomAccessIter * bins = <a class="code" href="namespaceboost_1_1sort_1_1detail.html#ad5b7d31fba809eae5d17f5c2fb0a385b">size_bins</a>(bin_sizes, bin_cache, cache_offset,</div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; cache_end, bin_count);</div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;</div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="comment">//Calculating the size of each bin</span></div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">for</span> (RandomAccessIter current = first; current != last;)</div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; bin_sizes[<span class="keywordtype">unsigned</span>(rshift(*(current++), log_divisor) - div_min)]++;</div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="comment">//The index of the first positive bin</span></div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordtype">unsigned</span> first_positive = (div_min &lt; 0) ? <span class="keywordtype">unsigned</span>(-div_min) : 0;</div>
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="comment">//Resetting if all bins are negative</span></div>
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">if</span> (cache_offset + first_positive &gt; cache_end)</div>
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; first_positive = cache_end - cache_offset;</div>
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="comment">//Reversing the order of the negative bins</span></div>
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="comment">//Note that because of the negative/positive ordering direction flip</span></div>
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="comment">//We can not depend upon bin order and positions matching up</span></div>
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="comment">//so bin_sizes must be reused to contain the end of the bin</span></div>
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">if</span> (first_positive &gt; 0) {</div>
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; bins[first_positive - 1] = first;</div>
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ii = first_positive - 2; ii &gt;= 0; --ii) {</div>
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; bins[ii] = first + bin_sizes[ii + 1];</div>
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; bin_sizes[ii] += bin_sizes[ii + 1];</div>
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; }</div>
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="comment">//Handling positives following negatives</span></div>
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="keywordflow">if</span> (static_cast&lt;unsigned&gt;(first_positive) &lt; bin_count) {</div>
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; bins[first_positive] = first + bin_sizes[0];</div>
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; bin_sizes[first_positive] += bin_sizes[0];</div>
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; }</div>
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; }</div>
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; bins[0] = first;</div>
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = first_positive; u &lt; bin_count - 1; u++) {</div>
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; bins[u + 1] = first + bin_sizes[u];</div>
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; bin_sizes[u + 1] += bin_sizes[u];</div>
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; }</div>
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;</div>
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="comment">//Swap into place</span></div>
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; RandomAccessIter next_bin_start = first;</div>
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = 0; u &lt; bin_count; ++u) {</div>
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; next_bin_start = first + bin_sizes[u];</div>
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; inner_swap_loop&lt;RandomAccessIter, Div_type, Right_shift&gt;</div>
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; (bins, next_bin_start, u, rshift, log_divisor, div_min);</div>
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; }</div>
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;</div>
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="comment">//Return if we&#39;ve completed bucketsorting</span></div>
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">if</span> (!log_divisor)</div>
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;</div>
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="comment">//Handling negative values first</span></div>
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keywordtype">size_t</span> max_count = <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a4ba5c57512d16f300c08b7a6b4e6ff23">get_min_count</a>&lt;<a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a0631b5d90d6ff0f1ff5370c616047a33">float_log_mean_bin_size</a>,</div>
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907aa0ee6e920e1d3d09e148ce00a985340c">float_log_min_split_count</a>,</div>
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a498b754f6198248703d3907562207d28">float_log_finishing_count</a>&gt;(log_divisor);</div>
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; RandomAccessIter lastPos = first;</div>
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ii = cache_offset + first_positive - 1; </div>
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; ii &gt;= <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(cache_offset);</div>
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; lastPos = bin_cache[ii--]) {</div>
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordtype">size_t</span> count = bin_cache[ii] - lastPos;</div>
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">if</span> (count &lt; 2)</div>
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">if</span> (count &lt; max_count)</div>
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; std::sort(lastPos, bin_cache[ii]);</div>
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="comment">//sort negative values using reversed-bin spreadsort</span></div>
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a6b85a606f35ef97e23c7f8aed1c655b9">negative_float_sort_rec</a>&lt;RandomAccessIter, Div_type,</div>
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; Right_shift, Size_type&gt;(lastPos, bin_cache[ii], bin_cache,</div>
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; cache_end, bin_sizes, rshift);</div>
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; }</div>
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;</div>
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = cache_offset + first_positive; u &lt; cache_end;</div>
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; lastPos = bin_cache[u], ++u) {</div>
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keywordtype">size_t</span> count = bin_cache[u] - lastPos;</div>
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keywordflow">if</span> (count &lt; 2)</div>
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keywordflow">if</span> (count &lt; max_count)</div>
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; std::sort(lastPos, bin_cache[u]);</div>
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="comment">//sort positive values using normal spreadsort</span></div>
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; spreadsort_rec&lt;RandomAccessIter, Div_type, Right_shift, Size_type,</div>
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a0631b5d90d6ff0f1ff5370c616047a33">float_log_mean_bin_size</a>, <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907aa0ee6e920e1d3d09e148ce00a985340c">float_log_min_split_count</a>,</div>
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a498b754f6198248703d3907562207d28">float_log_finishing_count</a>&gt;</div>
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; (lastPos, bin_cache[u], bin_cache, cache_end, bin_sizes, rshift);</div>
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; }</div>
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; }</div>
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;</div>
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>RandomAccessIter, <span class="keyword">class </span>Div_type, <span class="keyword">class </span>Right_shift,</div>
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keyword">class </span>Compare, <span class="keyword">class </span>Size_type&gt;</div>
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00575"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#a7b984ddce7638d78d26ea22cea08f2e7"> 575</a></span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a1faa4283ebb64ba23c4a73c1c0a6548a">float_sort_rec</a>(RandomAccessIter first, RandomAccessIter last,</div>
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; std::vector&lt;RandomAccessIter&gt; &amp;bin_cache, <span class="keywordtype">unsigned</span> cache_offset,</div>
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordtype">size_t</span> *bin_sizes, Right_shift rshift, Compare comp)</div>
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; {</div>
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; Div_type max, min;</div>
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1sort_1_1detail.html#a8aaa1645892e6f6845455605b48a5d0e">is_sorted_or_find_extremes</a>(first, last, max, min, rshift))</div>
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordtype">unsigned</span> log_divisor = get_log_divisor&lt;float_log_mean_bin_size&gt;(</div>
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; last - first, <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a852a51cde62aa67347cb9b4a7350bbac">rough_log_2_size</a>(Size_type(max - min)));</div>
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; Div_type div_min = min &gt;&gt; log_divisor;</div>
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; Div_type div_max = max &gt;&gt; log_divisor;</div>
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keywordtype">unsigned</span> bin_count = unsigned(div_max - div_min) + 1;</div>
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="keywordtype">unsigned</span> cache_end;</div>
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; RandomAccessIter * bins = <a class="code" href="namespaceboost_1_1sort_1_1detail.html#ad5b7d31fba809eae5d17f5c2fb0a385b">size_bins</a>(bin_sizes, bin_cache, cache_offset,</div>
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; cache_end, bin_count);</div>
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;</div>
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="comment">//Calculating the size of each bin</span></div>
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordflow">for</span> (RandomAccessIter current = first; current != last;)</div>
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; bin_sizes[<span class="keywordtype">unsigned</span>(rshift(*(current++), log_divisor) - div_min)]++;</div>
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="comment">//The index of the first positive bin</span></div>
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keywordtype">unsigned</span> first_positive = </div>
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; (div_min &lt; 0) ? static_cast&lt;unsigned&gt;(-div_min) : 0;</div>
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="comment">//Resetting if all bins are negative</span></div>
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keywordflow">if</span> (cache_offset + first_positive &gt; cache_end)</div>
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; first_positive = cache_end - cache_offset;</div>
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="comment">//Reversing the order of the negative bins</span></div>
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="comment">//Note that because of the negative/positive ordering direction flip</span></div>
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="comment">//We can not depend upon bin order and positions matching up</span></div>
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="comment">//so bin_sizes must be reused to contain the end of the bin</span></div>
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">if</span> (first_positive &gt; 0) {</div>
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; bins[first_positive - 1] = first;</div>
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ii = first_positive - 2; ii &gt;= 0; --ii) {</div>
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; bins[ii] = first + bin_sizes[ii + 1];</div>
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; bin_sizes[ii] += bin_sizes[ii + 1];</div>
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; }</div>
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="comment">//Handling positives following negatives</span></div>
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keywordflow">if</span> (static_cast&lt;unsigned&gt;(first_positive) &lt; bin_count) {</div>
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; bins[first_positive] = first + bin_sizes[0];</div>
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; bin_sizes[first_positive] += bin_sizes[0];</div>
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; }</div>
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; }</div>
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; bins[0] = first;</div>
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = first_positive; u &lt; bin_count - 1; u++) {</div>
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; bins[u + 1] = first + bin_sizes[u];</div>
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; bin_sizes[u + 1] += bin_sizes[u];</div>
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; }</div>
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;</div>
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="comment">//Swap into place</span></div>
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; RandomAccessIter next_bin_start = first;</div>
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = 0; u &lt; bin_count; ++u) {</div>
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; next_bin_start = first + bin_sizes[u];</div>
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; inner_swap_loop&lt;RandomAccessIter, Div_type, Right_shift&gt;</div>
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; (bins, next_bin_start, u, rshift, log_divisor, div_min);</div>
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; }</div>
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;</div>
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="comment">//Return if we&#39;ve completed bucketsorting</span></div>
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keywordflow">if</span> (!log_divisor)</div>
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160;</div>
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="comment">//Handling negative values first</span></div>
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordtype">size_t</span> max_count = <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a4ba5c57512d16f300c08b7a6b4e6ff23">get_min_count</a>&lt;<a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a0631b5d90d6ff0f1ff5370c616047a33">float_log_mean_bin_size</a>,</div>
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907aa0ee6e920e1d3d09e148ce00a985340c">float_log_min_split_count</a>,</div>
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a498b754f6198248703d3907562207d28">float_log_finishing_count</a>&gt;(log_divisor);</div>
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; RandomAccessIter lastPos = first;</div>
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ii = cache_offset + first_positive - 1; </div>
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; ii &gt;= <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(cache_offset);</div>
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; lastPos = bin_cache[ii--]) {</div>
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordtype">size_t</span> count = bin_cache[ii] - lastPos;</div>
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keywordflow">if</span> (count &lt; 2)</div>
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">if</span> (count &lt; max_count)</div>
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; std::sort(lastPos, bin_cache[ii], comp);</div>
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="comment">//sort negative values using reversed-bin spreadsort</span></div>
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a6b85a606f35ef97e23c7f8aed1c655b9">negative_float_sort_rec</a>&lt;RandomAccessIter, Div_type, Right_shift,</div>
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; Compare, Size_type&gt;(lastPos, bin_cache[ii],</div>
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; bin_cache, cache_end,</div>
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; bin_sizes, rshift, comp);</div>
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; }</div>
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160;</div>
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = cache_offset + first_positive; u &lt; cache_end;</div>
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; lastPos = bin_cache[u], ++u) {</div>
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keywordtype">size_t</span> count = bin_cache[u] - lastPos;</div>
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">if</span> (count &lt; 2)</div>
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">if</span> (count &lt; max_count)</div>
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; std::sort(lastPos, bin_cache[u], comp);</div>
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="comment">//sort positive values using normal spreadsort</span></div>
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; spreadsort_rec&lt;RandomAccessIter, Div_type, Right_shift, Compare,</div>
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; Size_type, <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a0631b5d90d6ff0f1ff5370c616047a33">float_log_mean_bin_size</a>,</div>
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907aa0ee6e920e1d3d09e148ce00a985340c">float_log_min_split_count</a>, <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a498b754f6198248703d3907562207d28">float_log_finishing_count</a>&gt;</div>
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; (lastPos, bin_cache[u], bin_cache, cache_end, bin_sizes, rshift, comp);</div>
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; }</div>
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; }</div>
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160;</div>
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="comment">//Checking whether the value type is a float, and trying a 32-bit integer</span></div>
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter&gt;</div>
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="keyword">inline</span> <span class="keyword">typename</span> boost::enable_if_c&lt; <span class="keyword">sizeof</span>(boost::uint32_t) ==</div>
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keyword">sizeof</span>(<span class="keyword">typename</span> std::iterator_traits&lt;RandomAccessIter&gt;::value_type)</div>
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; &amp;&amp; std::numeric_limits&lt;<span class="keyword">typename</span></div>
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; std::iterator_traits&lt;RandomAccessIter&gt;::value_type&gt;::is_iec559,</div>
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keywordtype">void</span> &gt;::type</div>
<div class="line"><a name="l00679"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#aaa66aec0efcc4f4a7f5584886e93444b"> 679</a></span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#aaa66aec0efcc4f4a7f5584886e93444b">float_sort</a>(RandomAccessIter first, RandomAccessIter last)</div>
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; {</div>
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="keywordtype">size_t</span> bin_sizes[1 &lt;&lt; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a17b216febe1b5e8212a80231592fc9d9">max_splits</a>];</div>
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; std::vector&lt;RandomAccessIter&gt; bin_cache;</div>
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; float_sort_rec&lt;RandomAccessIter, boost::int32_t, boost::uint32_t&gt;</div>
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; (first, last, bin_cache, 0, bin_sizes);</div>
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; }</div>
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;</div>
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="comment">//Checking whether the value type is a double, and using a 64-bit integer</span></div>
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter&gt;</div>
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keyword">inline</span> <span class="keyword">typename</span> boost::enable_if_c&lt; <span class="keyword">sizeof</span>(boost::uint64_t) ==</div>
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keyword">sizeof</span>(<span class="keyword">typename</span> std::iterator_traits&lt;RandomAccessIter&gt;::value_type)</div>
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; &amp;&amp; std::numeric_limits&lt;<span class="keyword">typename</span></div>
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; std::iterator_traits&lt;RandomAccessIter&gt;::value_type&gt;::is_iec559,</div>
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keywordtype">void</span> &gt;::type</div>
<div class="line"><a name="l00694"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#aa9667055e88a8492bac9cd1b14cc86e0"> 694</a></span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#aaa66aec0efcc4f4a7f5584886e93444b">float_sort</a>(RandomAccessIter first, RandomAccessIter last)</div>
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; {</div>
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keywordtype">size_t</span> bin_sizes[1 &lt;&lt; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a17b216febe1b5e8212a80231592fc9d9">max_splits</a>];</div>
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; std::vector&lt;RandomAccessIter&gt; bin_cache;</div>
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; float_sort_rec&lt;RandomAccessIter, boost::int64_t, boost::uint64_t&gt;</div>
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; (first, last, bin_cache, 0, bin_sizes);</div>
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; }</div>
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;</div>
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter&gt;</div>
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keyword">inline</span> <span class="keyword">typename</span> boost::disable_if_c&lt; (<span class="keyword">sizeof</span>(boost::uint64_t) ==</div>
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keyword">sizeof</span>(<span class="keyword">typename</span> std::iterator_traits&lt;RandomAccessIter&gt;::value_type)</div>
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; || <span class="keyword">sizeof</span>(boost::uint32_t) ==</div>
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keyword">sizeof</span>(<span class="keyword">typename</span> std::iterator_traits&lt;RandomAccessIter&gt;::value_type))</div>
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; &amp;&amp; std::numeric_limits&lt;<span class="keyword">typename</span></div>
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; std::iterator_traits&lt;RandomAccessIter&gt;::value_type&gt;::is_iec559,</div>
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keywordtype">void</span> &gt;::type</div>
<div class="line"><a name="l00710"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#a298f19036e85ffc74dbe92d2c26eae77"> 710</a></span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#aaa66aec0efcc4f4a7f5584886e93444b">float_sort</a>(RandomAccessIter first, RandomAccessIter last)</div>
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; {</div>
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; BOOST_STATIC_WARNING(!(<span class="keyword">sizeof</span>(boost::uint64_t) ==</div>
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keyword">sizeof</span>(<span class="keyword">typename</span> std::iterator_traits&lt;RandomAccessIter&gt;::value_type)</div>
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; || <span class="keyword">sizeof</span>(boost::uint32_t) ==</div>
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keyword">sizeof</span>(<span class="keyword">typename</span> std::iterator_traits&lt;RandomAccessIter&gt;::value_type))</div>
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; || !std::numeric_limits&lt;<span class="keyword">typename</span></div>
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; std::iterator_traits&lt;RandomAccessIter&gt;::value_type&gt;::is_iec559);</div>
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; std::sort(first, last);</div>
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; }</div>
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160;</div>
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="comment">//These approaches require the user to do the typecast</span></div>
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="comment">//with rshift but default comparision</span></div>
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Div_type, <span class="keyword">class</span> Right_shift&gt;</div>
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="keyword">inline</span> <span class="keyword">typename</span> boost::enable_if_c&lt; sizeof(size_t) &gt;= <span class="keyword">sizeof</span>(Div_type),</div>
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="keywordtype">void</span> &gt;::type</div>
<div class="line"><a name="l00726"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#a22be02c948faa1f93e4dbb58b03b6e42"> 726</a></span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#aaa66aec0efcc4f4a7f5584886e93444b">float_sort</a>(RandomAccessIter first, RandomAccessIter last, Div_type,</div>
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; Right_shift rshift)</div>
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; {</div>
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="keywordtype">size_t</span> bin_sizes[1 &lt;&lt; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a17b216febe1b5e8212a80231592fc9d9">max_splits</a>];</div>
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; std::vector&lt;RandomAccessIter&gt; bin_cache;</div>
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; float_sort_rec&lt;RandomAccessIter, Div_type, Right_shift, size_t&gt;</div>
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; (first, last, bin_cache, 0, bin_sizes, rshift);</div>
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; }</div>
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160;</div>
<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="comment">//maximum integer size with rshift but default comparision</span></div>
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Div_type, <span class="keyword">class</span> Right_shift&gt;</div>
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="keyword">inline</span> <span class="keyword">typename</span> boost::enable_if_c&lt; <span class="keyword">sizeof</span>(size_t) &lt; <span class="keyword">sizeof</span>(Div_type)</div>
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; &amp;&amp; <span class="keyword">sizeof</span>(boost::uintmax_t) &gt;= <span class="keyword">sizeof</span>(Div_type), <span class="keywordtype">void</span> &gt;::type</div>
<div class="line"><a name="l00739"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#a5e85811e357edf81ed621e25407b3256"> 739</a></span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#aaa66aec0efcc4f4a7f5584886e93444b">float_sort</a>(RandomAccessIter first, RandomAccessIter last, Div_type,</div>
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; Right_shift rshift)</div>
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; {</div>
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="keywordtype">size_t</span> bin_sizes[1 &lt;&lt; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a17b216febe1b5e8212a80231592fc9d9">max_splits</a>];</div>
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; std::vector&lt;RandomAccessIter&gt; bin_cache;</div>
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; float_sort_rec&lt;RandomAccessIter, Div_type, Right_shift, boost::uintmax_t&gt;</div>
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; (first, last, bin_cache, 0, bin_sizes, rshift);</div>
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; }</div>
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160;</div>
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <span class="comment">//sizeof(Div_type) doesn&#39;t match, so use std::sort</span></div>
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Div_type, <span class="keyword">class</span> Right_shift&gt;</div>
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <span class="keyword">inline</span> <span class="keyword">typename</span> boost::disable_if_c&lt; sizeof(boost::uintmax_t) &gt;=</div>
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <span class="keyword">sizeof</span>(Div_type), <span class="keywordtype">void</span> &gt;::type</div>
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#aaa66aec0efcc4f4a7f5584886e93444b">float_sort</a>(RandomAccessIter first, RandomAccessIter last, Div_type,</div>
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; Right_shift rshift)</div>
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; {</div>
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; BOOST_STATIC_WARNING(<span class="keyword">sizeof</span>(boost::uintmax_t) &gt;= <span class="keyword">sizeof</span>(Div_type));</div>
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; std::sort(first, last);</div>
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; }</div>
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160;</div>
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <span class="comment">//specialized comparison</span></div>
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>RandomAccessIter, <span class="keyword">class </span>Div_type, <span class="keyword">class </span>Right_shift,</div>
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; <span class="keyword">class </span>Compare&gt;</div>
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; <span class="keyword">inline</span> <span class="keyword">typename</span> boost::enable_if_c&lt; sizeof(size_t) &gt;= <span class="keyword">sizeof</span>(Div_type),</div>
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="keywordtype">void</span> &gt;::type</div>
<div class="line"><a name="l00764"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#a23494fbb0eadd6a979f0b6c9fc19ea61"> 764</a></span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#aaa66aec0efcc4f4a7f5584886e93444b">float_sort</a>(RandomAccessIter first, RandomAccessIter last, Div_type,</div>
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; Right_shift rshift, Compare comp)</div>
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; {</div>
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keywordtype">size_t</span> bin_sizes[1 &lt;&lt; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a17b216febe1b5e8212a80231592fc9d9">max_splits</a>];</div>
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; std::vector&lt;RandomAccessIter&gt; bin_cache;</div>
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a1faa4283ebb64ba23c4a73c1c0a6548a">float_sort_rec</a>&lt;RandomAccessIter, Div_type, Right_shift, Compare,</div>
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; <span class="keywordtype">size_t</span>&gt;</div>
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; (first, last, bin_cache, 0, bin_sizes, rshift, comp);</div>
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; }</div>
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;</div>
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="comment">//max-sized integer with specialized comparison</span></div>
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>RandomAccessIter, <span class="keyword">class </span>Div_type, <span class="keyword">class </span>Right_shift,</div>
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="keyword">class </span>Compare&gt;</div>
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="keyword">inline</span> <span class="keyword">typename</span> boost::enable_if_c&lt; <span class="keyword">sizeof</span>(size_t) &lt; <span class="keyword">sizeof</span>(Div_type)</div>
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; &amp;&amp; <span class="keyword">sizeof</span>(boost::uintmax_t) &gt;= <span class="keyword">sizeof</span>(Div_type), <span class="keywordtype">void</span> &gt;::type</div>
<div class="line"><a name="l00779"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#ad73450f75077d802111a93f66e24a4bc"> 779</a></span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#aaa66aec0efcc4f4a7f5584886e93444b">float_sort</a>(RandomAccessIter first, RandomAccessIter last, Div_type,</div>
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; Right_shift rshift, Compare comp)</div>
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; {</div>
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keywordtype">size_t</span> bin_sizes[1 &lt;&lt; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a17b216febe1b5e8212a80231592fc9d9">max_splits</a>];</div>
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; std::vector&lt;RandomAccessIter&gt; bin_cache;</div>
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a1faa4283ebb64ba23c4a73c1c0a6548a">float_sort_rec</a>&lt;RandomAccessIter, Div_type, Right_shift, Compare,</div>
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; boost::uintmax_t&gt;</div>
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; (first, last, bin_cache, 0, bin_sizes, rshift, comp);</div>
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; }</div>
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160;</div>
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="comment">//sizeof(Div_type) doesn&#39;t match, so use std::sort</span></div>
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>RandomAccessIter, <span class="keyword">class </span>Div_type, <span class="keyword">class </span>Right_shift,</div>
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <span class="keyword">class </span>Compare&gt;</div>
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <span class="keyword">inline</span> <span class="keyword">typename</span> boost::disable_if_c&lt; sizeof(boost::uintmax_t) &gt;=</div>
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; <span class="keyword">sizeof</span>(Div_type), <span class="keywordtype">void</span> &gt;::type</div>
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#aaa66aec0efcc4f4a7f5584886e93444b">float_sort</a>(RandomAccessIter first, RandomAccessIter last, Div_type,</div>
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; Right_shift rshift, Compare comp)</div>
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; {</div>
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; BOOST_STATIC_WARNING(<span class="keyword">sizeof</span>(boost::uintmax_t) &gt;= <span class="keyword">sizeof</span>(Div_type));</div>
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; std::sort(first, last, comp);</div>
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; }</div>
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; }</div>
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160;}</div>
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160;}</div>
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160;</div>
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_a1faa4283ebb64ba23c4a73c1c0a6548a"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#a1faa4283ebb64ba23c4a73c1c0a6548a">boost::sort::detail::float_sort_rec</a></div><div class="ttdeci">void float_sort_rec(RandomAccessIter first, RandomAccessIter last, std::vector&lt; RandomAccessIter &gt; &amp;bin_cache, unsigned cache_offset, size_t *bin_sizes)</div><div class="ttdef"><b>Definition:</b> float_sort.hpp:379</div></div>
<div class="ttc" id="namespaceboost_html"><div class="ttname"><a href="namespaceboost.html">boost</a></div><div class="ttdef"><b>Definition:</b> constants.hpp:11</div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_a8e8308c47bd14eff1c1d0f498289de35"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#a8e8308c47bd14eff1c1d0f498289de35">boost::sort::detail::cast_float_iter</a></div><div class="ttdeci">Cast_type cast_float_iter(const RandomAccessIter &amp;floatiter)</div><div class="ttdef"><b>Definition:</b> float_sort.hpp:37</div></div>
<div class="ttc" id="detail_2integer__sort_8hpp_html"><div class="ttname"><a href="detail_2integer__sort_8hpp.html">integer_sort.hpp</a></div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_a7bbd2027f75936442318063f34953907a498b754f6198248703d3907562207d28"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a498b754f6198248703d3907562207d28">boost::sort::detail::float_log_finishing_count</a></div><div class="ttdef"><b>Definition:</b> constants.hpp:38</div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_ac04e982cc9f6bcc101f6af6bcd7b36b3"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#ac04e982cc9f6bcc101f6af6bcd7b36b3">boost::sort::detail::inner_float_swap_loop</a></div><div class="ttdeci">void inner_float_swap_loop(RandomAccessIter *bins, const RandomAccessIter &amp;nextbinstart, unsigned ii, const unsigned log_divisor, const Div_type div_min)</div><div class="ttdef"><b>Definition:</b> float_sort.hpp:74</div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_a4ba5c57512d16f300c08b7a6b4e6ff23"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#a4ba5c57512d16f300c08b7a6b4e6ff23">boost::sort::detail::get_min_count</a></div><div class="ttdeci">size_t get_min_count(unsigned log_range)</div><div class="ttdef"><b>Definition:</b> spreadsort_common.hpp:51</div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_a7bbd2027f75936442318063f34953907a17b216febe1b5e8212a80231592fc9d9"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a17b216febe1b5e8212a80231592fc9d9">boost::sort::detail::max_splits</a></div><div class="ttdef"><b>Definition:</b> constants.hpp:19</div></div>
<div class="ttc" id="spreadsort__common_8hpp_html"><div class="ttname"><a href="spreadsort__common_8hpp.html">spreadsort_common.hpp</a></div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_a18fb49752147ebb43503428568323d37"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#a18fb49752147ebb43503428568323d37">boost::sort::detail::float_swap_loop</a></div><div class="ttdeci">void float_swap_loop(RandomAccessIter *bins, RandomAccessIter &amp;nextbinstart, unsigned ii, const size_t *bin_sizes, const unsigned log_divisor, const Div_type div_min)</div><div class="ttdef"><b>Definition:</b> float_sort.hpp:107</div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_a852a51cde62aa67347cb9b4a7350bbac"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#a852a51cde62aa67347cb9b4a7350bbac">boost::sort::detail::rough_log_2_size</a></div><div class="ttdeci">unsigned rough_log_2_size(const T &amp;input)</div><div class="ttdef"><b>Definition:</b> spreadsort_common.hpp:34</div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_a8aaa1645892e6f6845455605b48a5d0e"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#a8aaa1645892e6f6845455605b48a5d0e">boost::sort::detail::is_sorted_or_find_extremes</a></div><div class="ttdeci">bool is_sorted_or_find_extremes(RandomAccessIter current, RandomAccessIter last, Div_type &amp;max, Div_type &amp;min, Right_shift rshift)</div><div class="ttdef"><b>Definition:</b> float_sort.hpp:54</div></div>
<div class="ttc" id="constants_8hpp_html"><div class="ttname"><a href="constants_8hpp.html">constants.hpp</a></div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_ad5b7d31fba809eae5d17f5c2fb0a385b"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#ad5b7d31fba809eae5d17f5c2fb0a385b">boost::sort::detail::size_bins</a></div><div class="ttdeci">RandomAccessIter * size_bins(size_t *bin_sizes, std::vector&lt; RandomAccessIter &gt; &amp;bin_cache, unsigned cache_offset, unsigned &amp;cache_end, unsigned bin_count)</div><div class="ttdef"><b>Definition:</b> spreadsort_common.hpp:106</div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_a7bbd2027f75936442318063f34953907aa0ee6e920e1d3d09e148ce00a985340c"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907aa0ee6e920e1d3d09e148ce00a985340c">boost::sort::detail::float_log_min_split_count</a></div><div class="ttdef"><b>Definition:</b> constants.hpp:35</div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_a7bbd2027f75936442318063f34953907a0631b5d90d6ff0f1ff5370c616047a33"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a0631b5d90d6ff0f1ff5370c616047a33">boost::sort::detail::float_log_mean_bin_size</a></div><div class="ttdef"><b>Definition:</b> constants.hpp:32</div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_a6b85a606f35ef97e23c7f8aed1c655b9"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#a6b85a606f35ef97e23c7f8aed1c655b9">boost::sort::detail::negative_float_sort_rec</a></div><div class="ttdeci">void negative_float_sort_rec(RandomAccessIter first, RandomAccessIter last, std::vector&lt; RandomAccessIter &gt; &amp;bin_cache, unsigned cache_offset, size_t *bin_sizes)</div><div class="ttdef"><b>Definition:</b> float_sort.hpp:201</div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_a3b8a896e29139b047fb1886262d124ab"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#a3b8a896e29139b047fb1886262d124ab">boost::sort::detail::positive_float_sort_rec</a></div><div class="ttdeci">void positive_float_sort_rec(RandomAccessIter first, RandomAccessIter last, std::vector&lt; RandomAccessIter &gt; &amp;bin_cache, unsigned cache_offset, size_t *bin_sizes)</div><div class="ttdef"><b>Definition:</b> float_sort.hpp:142</div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_aaa66aec0efcc4f4a7f5584886e93444b"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#aaa66aec0efcc4f4a7f5584886e93444b">boost::sort::detail::float_sort</a></div><div class="ttdeci">boost::enable_if_c&lt; sizeof(boost::uint32_t)==sizeof(typename std::iterator_traits&lt; RandomAccessIter &gt;::value_type)&amp;&amp;std::numeric_limits&lt; typename std::iterator_traits&lt; RandomAccessIter &gt;::value_type &gt;::is_iec559, void &gt;::type float_sort(RandomAccessIter first, RandomAccessIter last)</div><div class="ttdef"><b>Definition:</b> float_sort.hpp:679</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 7 2015 17:29:22 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,111 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/include/boost/sort/spreadsort/detail/integer_sort.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_1878a3f4746a95c6aad317458cc7ef80.html">boost</a></li><li class="navelem"><a class="el" href="dir_0dcad0da4f36218cbabb216021de9867.html">sort</a></li><li class="navelem"><a class="el" href="dir_4aa236a92b75d6f514e733718a475329.html">spreadsort</a></li><li class="navelem"><a class="el" href="dir_1b6f0a484b3a75c2ed43dc394e95eff6.html">detail</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">integer_sort.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;algorithm&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
<code>#include &lt;limits&gt;</code><br />
<code>#include &lt;functional&gt;</code><br />
<code>#include &lt;boost/static_assert.hpp&gt;</code><br />
<code>#include &lt;boost/serialization/static_warning.hpp&gt;</code><br />
<code>#include &lt;boost/utility/enable_if.hpp&gt;</code><br />
<code>#include &lt;<a class="el" href="constants_8hpp_source.html">boost/sort/spreadsort/detail/constants.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="spreadsort__common_8hpp_source.html">boost/sort/spreadsort/detail/spreadsort_common.hpp</a>&gt;</code><br />
<code>#include &lt;boost/cstdint.hpp&gt;</code><br />
</div>
<p><a href="detail_2integer__sort_8hpp_source.html">Go to the source code of this file.</a></p>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 7 2015 17:29:22 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,608 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/include/boost/sort/spreadsort/detail/integer_sort.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_1878a3f4746a95c6aad317458cc7ef80.html">boost</a></li><li class="navelem"><a class="el" href="dir_0dcad0da4f36218cbabb216021de9867.html">sort</a></li><li class="navelem"><a class="el" href="dir_4aa236a92b75d6f514e733718a475329.html">spreadsort</a></li><li class="navelem"><a class="el" href="dir_1b6f0a484b3a75c2ed43dc394e95eff6.html">detail</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">integer_sort.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="detail_2integer__sort_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Details for templated Spreadsort-based integer_sort.</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright Steven J. Ross 2001 - 2014.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Distributed under the Boost Software License, Version 1.0.</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// (See accompanying file LICENSE_1_0.txt or copy at</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// See http://www.boost.org/libs/sort for library home page.</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">Some improvements suggested by:</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">Phil Endecott and Frank Gennari</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef BOOST_SORT_SPREADSORT_DETAIL_INTEGER_SORT_HPP</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define BOOST_SORT_SPREADSORT_DETAIL_INTEGER_SORT_HPP</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &lt;limits&gt;</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;functional&gt;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &lt;boost/static_assert.hpp&gt;</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;boost/serialization/static_warning.hpp&gt;</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &lt;boost/utility/enable_if.hpp&gt;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="constants_8hpp.html">boost/sort/spreadsort/detail/constants.hpp</a>&gt;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="spreadsort__common_8hpp.html">boost/sort/spreadsort/detail/spreadsort_common.hpp</a>&gt;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;boost/cstdint.hpp&gt;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">//! \cond DETAIL</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceboost.html">boost</a> {</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="keyword">namespace </span>sort {</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">namespace </span>detail {</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="comment">// Return true if the list is sorted. Otherwise, find the minimum and</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="comment">// maximum using &lt;.</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter&gt;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a8aaa1645892e6f6845455605b48a5d0e">is_sorted_or_find_extremes</a>(RandomAccessIter current, RandomAccessIter last,</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; RandomAccessIter &amp; max, RandomAccessIter &amp; min)</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; {</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; min = max = current;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="comment">//This assumes we have more than 1 element based on prior checks.</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">while</span> (!(*(current + 1) &lt; *current)) {</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">//If everything is in sorted order, return</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">if</span> (++current == last - 1)</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; }</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="comment">//The maximum is the last sorted element</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; max = current;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="comment">//Start from the first unsorted element</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">while</span> (++current &lt; last) {</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">if</span> (*max &lt; *current)</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; max = current;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*current &lt; *min)</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; min = current;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="comment">// Return true if the list is sorted. Otherwise, find the minimum and</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="comment">// maximum.</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="comment">// Use a user-defined comparison operator</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Compare&gt;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a8aaa1645892e6f6845455605b48a5d0e">is_sorted_or_find_extremes</a>(RandomAccessIter current, RandomAccessIter last,</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; RandomAccessIter &amp; max, RandomAccessIter &amp; min, Compare comp)</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; min = max = current;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">while</span> (!comp(*(current + 1), *current)) {</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="comment">//If everything is in sorted order, return</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">if</span> (++current == last - 1)</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="comment">//The maximum is the last sorted element</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; max = current;</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">while</span> (++current &lt; last) {</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">if</span> (comp(*max, *current))</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; max = current;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (comp(*current, *min))</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; min = current;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; }</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="comment">//Gets a non-negative right bit shift to operate as a logarithmic divisor</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">unsigned</span> log_mean_bin_size&gt;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">int</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; get_log_divisor(<span class="keywordtype">size_t</span> count, <span class="keywordtype">int</span> log_range)</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordtype">int</span> log_divisor;</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="comment">//If we can finish in one iteration without exceeding either</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="comment">//(2 to the max_finishing_splits) or n bins, do so</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">if</span> ((log_divisor = log_range - <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a852a51cde62aa67347cb9b4a7350bbac">rough_log_2_size</a>(count)) &lt;= 0 &amp;&amp;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; log_range &lt;= <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907acfdc43b3d7aa6df69b0f6982918056c7">max_finishing_splits</a>)</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; log_divisor = 0;</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="comment">//otherwise divide the data into an optimized number of pieces</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; log_divisor += log_mean_bin_size;</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="comment">//Cannot exceed max_splits or cache misses slow down bin lookups</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">if</span> ((log_range - log_divisor) &gt; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a17b216febe1b5e8212a80231592fc9d9">max_splits</a>)</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; log_divisor = log_range - <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a17b216febe1b5e8212a80231592fc9d9">max_splits</a>;</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">return</span> log_divisor;</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; }</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="comment">//Implementation for recursive integer sorting</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Div_type, <span class="keyword">class</span> Size_type&gt;</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; spreadsort_rec(RandomAccessIter first, RandomAccessIter last,</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; std::vector&lt;RandomAccessIter&gt; &amp;bin_cache, <span class="keywordtype">unsigned</span> cache_offset</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; , <span class="keywordtype">size_t</span> *bin_sizes)</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; {</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="comment">//This step is roughly 10% of runtime, but it helps avoid worst-case</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="comment">//behavior and improve behavior with real data</span></div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">//If you know the maximum and minimum ahead of time, you can pass those</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="comment">//values in and skip this step for the first iteration</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; RandomAccessIter max, min;</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1sort_1_1detail.html#a8aaa1645892e6f6845455605b48a5d0e">is_sorted_or_find_extremes</a>(first, last, max, min))</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; RandomAccessIter * target_bin;</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordtype">unsigned</span> log_divisor = get_log_divisor&lt;int_log_mean_bin_size&gt;(</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; last - first, <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a852a51cde62aa67347cb9b4a7350bbac">rough_log_2_size</a>(Size_type((*max &gt;&gt; 0) - (*min &gt;&gt; 0))));</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; Div_type div_min = *min &gt;&gt; log_divisor;</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; Div_type div_max = *max &gt;&gt; log_divisor;</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordtype">unsigned</span> bin_count = unsigned(div_max - div_min) + 1;</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordtype">unsigned</span> cache_end;</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; RandomAccessIter * bins =</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#ad5b7d31fba809eae5d17f5c2fb0a385b">size_bins</a>(bin_sizes, bin_cache, cache_offset, cache_end, bin_count);</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="comment">//Calculating the size of each bin; this takes roughly 10% of runtime</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">for</span> (RandomAccessIter current = first; current != last;)</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; bin_sizes[<span class="keywordtype">size_t</span>((*(current++) &gt;&gt; log_divisor) - div_min)]++;</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="comment">//Assign the bin positions</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; bins[0] = first;</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = 0; u &lt; bin_count - 1; u++)</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; bins[u + 1] = bins[u] + bin_sizes[u];</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; RandomAccessIter nextbinstart = first;</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="comment">//Swap into place</span></div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="comment">//This dominates runtime, mostly in the swap and bin lookups</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = 0; u &lt; bin_count - 1; ++u) {</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; RandomAccessIter * local_bin = bins + u;</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; nextbinstart += bin_sizes[u];</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="comment">//Iterating over each element in this bin</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">for</span> (RandomAccessIter current = *local_bin; current &lt; nextbinstart;</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; ++current) {</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="comment">//Swapping elements in current into place until the correct</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="comment">//element has been swapped in</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">for</span> (target_bin = (bins + ((*current &gt;&gt; log_divisor) - div_min));</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; target_bin != local_bin;</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; target_bin = bins + ((*current &gt;&gt; log_divisor) - div_min)) {</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="comment">//3-way swap; this is about 1% faster than a 2-way swap</span></div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="comment">//The main advantage is less copies are involved per item</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="comment">//put in the correct place</span></div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keyword">typename</span> std::iterator_traits&lt;RandomAccessIter&gt;::value_type tmp;</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; RandomAccessIter b = (*target_bin)++;</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; RandomAccessIter * b_bin = bins + ((*b &gt;&gt; log_divisor) - div_min);</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">if</span> (b_bin != local_bin) {</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; RandomAccessIter c = (*b_bin)++;</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; tmp = *c;</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; *c = *b;</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; }</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; tmp = *b;</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; *b = *current;</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; *current = tmp;</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; *local_bin = nextbinstart;</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; }</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; bins[bin_count - 1] = last;</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="comment">//If we&#39;ve bucketsorted, the array is sorted and we should skip recursion</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">if</span> (!log_divisor)</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="comment">//log_divisor is the remaining range; calculating the comparison threshold</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordtype">size_t</span> max_count =</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a4ba5c57512d16f300c08b7a6b4e6ff23">get_min_count</a>&lt;<a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a2e171c91f6c9e1d82643e4b35a4c65de">int_log_mean_bin_size</a>, <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a53383c14d73d50ed8faaa695d820a5bf">int_log_min_split_count</a>,</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907ae0c3ec0c116b92c92015245fd5024a27">int_log_finishing_count</a>&gt;(log_divisor);</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="comment">//Recursing</span></div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; RandomAccessIter lastPos = first;</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = cache_offset; u &lt; cache_end; lastPos = bin_cache[u],</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; ++u) {</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; Size_type count = bin_cache[u] - lastPos;</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="comment">//don&#39;t sort unless there are at least two items to Compare</span></div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">if</span> (count &lt; 2)</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="comment">//using std::sort if its worst-case is better</span></div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">if</span> (count &lt; max_count)</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; std::sort(lastPos, bin_cache[u]);</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; spreadsort_rec&lt;RandomAccessIter, Div_type, Size_type&gt;(lastPos,</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; bin_cache[u],</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; bin_cache,</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; cache_end,</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; bin_sizes);</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; }</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; }</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="comment">//Generic bitshift-based 3-way swapping code</span></div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Div_type, <span class="keyword">class</span> Right_shift&gt;</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> inner_swap_loop(RandomAccessIter * bins,</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keyword">const</span> RandomAccessIter &amp; next_bin_start, <span class="keywordtype">unsigned</span> ii, Right_shift &amp;rshift</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; , <span class="keyword">const</span> <span class="keywordtype">unsigned</span> log_divisor, <span class="keyword">const</span> Div_type div_min)</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; {</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; RandomAccessIter * local_bin = bins + ii;</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">for</span> (RandomAccessIter current = *local_bin; current &lt; next_bin_start;</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; ++current) {</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">for</span> (RandomAccessIter * target_bin =</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; (bins + (rshift(*current, log_divisor) - div_min));</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; target_bin != local_bin;</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; target_bin = bins + (rshift(*current, log_divisor) - div_min)) {</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keyword">typename</span> std::iterator_traits&lt;RandomAccessIter&gt;::value_type tmp;</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; RandomAccessIter b = (*target_bin)++;</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; RandomAccessIter * b_bin =</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; bins + (rshift(*b, log_divisor) - div_min);</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="comment">//Three-way swap; if the item to be swapped doesn&#39;t belong</span></div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="comment">//in the current bin, swap it to where it belongs</span></div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">if</span> (b_bin != local_bin) {</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; RandomAccessIter c = (*b_bin)++;</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; tmp = *c;</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; *c = *b;</div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; }</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="comment">//Note: we could increment current once the swap is done in this case</span></div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="comment">//but that seems to impair performance</span></div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; tmp = *b;</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; *b = *current;</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; *current = tmp;</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; }</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; }</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; *local_bin = next_bin_start;</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; }</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="comment">//Standard swapping wrapper for ascending values</span></div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Div_type, <span class="keyword">class</span> Right_shift&gt;</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> swap_loop(RandomAccessIter * bins,</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; RandomAccessIter &amp; next_bin_start, <span class="keywordtype">unsigned</span> ii, Right_shift &amp;rshift</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; , <span class="keyword">const</span> <span class="keywordtype">size_t</span> *bin_sizes</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; , <span class="keyword">const</span> <span class="keywordtype">unsigned</span> log_divisor, <span class="keyword">const</span> Div_type div_min)</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; {</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; next_bin_start += bin_sizes[ii];</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; inner_swap_loop&lt;RandomAccessIter, Div_type, Right_shift&gt;(bins,</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; next_bin_start, ii, rshift, log_divisor, div_min);</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; }</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="comment">//Functor implementation for recursive sorting</span></div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>RandomAccessIter, <span class="keyword">class </span>Div_type, <span class="keyword">class </span>Right_shift,</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keyword">class </span>Compare, <span class="keyword">class </span>Size_type, <span class="keywordtype">unsigned</span> log_mean_bin_size,</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordtype">unsigned</span> log_min_split_count, <span class="keywordtype">unsigned</span> log_finishing_count&gt;</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; spreadsort_rec(RandomAccessIter first, RandomAccessIter last,</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; std::vector&lt;RandomAccessIter&gt; &amp;bin_cache, <span class="keywordtype">unsigned</span> cache_offset</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; , <span class="keywordtype">size_t</span> *bin_sizes, Right_shift rshift, Compare comp)</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; {</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; RandomAccessIter max, min;</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1sort_1_1detail.html#a8aaa1645892e6f6845455605b48a5d0e">is_sorted_or_find_extremes</a>(first, last, max, min, comp))</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordtype">unsigned</span> log_divisor = get_log_divisor&lt;log_mean_bin_size&gt;(last - first,</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a852a51cde62aa67347cb9b4a7350bbac">rough_log_2_size</a>(Size_type(rshift(*max, 0) - rshift(*min, 0))));</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; Div_type div_min = rshift(*min, log_divisor);</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; Div_type div_max = rshift(*max, log_divisor);</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordtype">unsigned</span> bin_count = unsigned(div_max - div_min) + 1;</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordtype">unsigned</span> cache_end;</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; RandomAccessIter * bins = <a class="code" href="namespaceboost_1_1sort_1_1detail.html#ad5b7d31fba809eae5d17f5c2fb0a385b">size_bins</a>(bin_sizes, bin_cache, cache_offset,</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; cache_end, bin_count);</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="comment">//Calculating the size of each bin</span></div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">for</span> (RandomAccessIter current = first; current != last;)</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; bin_sizes[<span class="keywordtype">unsigned</span>(rshift(*(current++), log_divisor) - div_min)]++;</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; bins[0] = first;</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = 0; u &lt; bin_count - 1; u++)</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; bins[u + 1] = bins[u] + bin_sizes[u];</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="comment">//Swap into place</span></div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; RandomAccessIter next_bin_start = first;</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = 0; u &lt; bin_count - 1; ++u)</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; swap_loop&lt;RandomAccessIter, Div_type, Right_shift&gt;(bins, next_bin_start,</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; u, rshift, bin_sizes, log_divisor, div_min);</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; bins[bin_count - 1] = last;</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="comment">//If we&#39;ve bucketsorted, the array is sorted</span></div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">if</span> (!log_divisor)</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="comment">//Recursing</span></div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordtype">size_t</span> max_count = <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a4ba5c57512d16f300c08b7a6b4e6ff23">get_min_count</a>&lt;log_mean_bin_size, log_min_split_count,</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; log_finishing_count&gt;(log_divisor);</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; RandomAccessIter lastPos = first;</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = cache_offset; u &lt; cache_end; lastPos = bin_cache[u],</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; ++u) {</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordtype">size_t</span> count = bin_cache[u] - lastPos;</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">if</span> (count &lt; 2)</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">if</span> (count &lt; max_count)</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; std::sort(lastPos, bin_cache[u], comp);</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; spreadsort_rec&lt;RandomAccessIter, Div_type, Right_shift, Compare,</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; Size_type, log_mean_bin_size, log_min_split_count, log_finishing_count&gt;</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; (lastPos, bin_cache[u], bin_cache, cache_end, bin_sizes, rshift, comp);</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; }</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; }</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="comment">//Functor implementation for recursive sorting with only Shift overridden</span></div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>RandomAccessIter, <span class="keyword">class </span>Div_type, <span class="keyword">class </span>Right_shift,</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keyword">class </span>Size_type, <span class="keywordtype">unsigned</span> log_mean_bin_size,</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordtype">unsigned</span> log_min_split_count, <span class="keywordtype">unsigned</span> log_finishing_count&gt;</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; spreadsort_rec(RandomAccessIter first, RandomAccessIter last,</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; std::vector&lt;RandomAccessIter&gt; &amp;bin_cache, <span class="keywordtype">unsigned</span> cache_offset</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; , <span class="keywordtype">size_t</span> *bin_sizes, Right_shift rshift)</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; {</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; RandomAccessIter max, min;</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceboost_1_1sort_1_1detail.html#a8aaa1645892e6f6845455605b48a5d0e">is_sorted_or_find_extremes</a>(first, last, max, min))</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordtype">unsigned</span> log_divisor = get_log_divisor&lt;log_mean_bin_size&gt;(last - first,</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a852a51cde62aa67347cb9b4a7350bbac">rough_log_2_size</a>(Size_type(rshift(*max, 0) - rshift(*min, 0))));</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; Div_type div_min = rshift(*min, log_divisor);</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; Div_type div_max = rshift(*max, log_divisor);</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordtype">unsigned</span> bin_count = unsigned(div_max - div_min) + 1;</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordtype">unsigned</span> cache_end;</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; RandomAccessIter * bins = <a class="code" href="namespaceboost_1_1sort_1_1detail.html#ad5b7d31fba809eae5d17f5c2fb0a385b">size_bins</a>(bin_sizes, bin_cache, cache_offset,</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; cache_end, bin_count);</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="comment">//Calculating the size of each bin</span></div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">for</span> (RandomAccessIter current = first; current != last;)</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; bin_sizes[<span class="keywordtype">unsigned</span>(rshift(*(current++), log_divisor) - div_min)]++;</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; bins[0] = first;</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = 0; u &lt; bin_count - 1; u++)</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; bins[u + 1] = bins[u] + bin_sizes[u];</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="comment">//Swap into place</span></div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; RandomAccessIter nextbinstart = first;</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> ii = 0; ii &lt; bin_count - 1; ++ii)</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; swap_loop&lt;RandomAccessIter, Div_type, Right_shift&gt;(bins, nextbinstart,</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; ii, rshift, bin_sizes, log_divisor, div_min);</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; bins[bin_count - 1] = last;</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="comment">//If we&#39;ve bucketsorted, the array is sorted</span></div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">if</span> (!log_divisor)</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="comment">//Recursing</span></div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordtype">size_t</span> max_count = <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a4ba5c57512d16f300c08b7a6b4e6ff23">get_min_count</a>&lt;log_mean_bin_size, log_min_split_count,</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; log_finishing_count&gt;(log_divisor);</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; RandomAccessIter lastPos = first;</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = cache_offset; u &lt; cache_end; lastPos = bin_cache[u],</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; ++u) {</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordtype">size_t</span> count = bin_cache[u] - lastPos;</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">if</span> (count &lt; 2)</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">if</span> (count &lt; max_count)</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; std::sort(lastPos, bin_cache[u]);</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; spreadsort_rec&lt;RandomAccessIter, Div_type, Right_shift, Size_type,</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; log_mean_bin_size, log_min_split_count, log_finishing_count&gt;(lastPos,</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; bin_cache[u], bin_cache, cache_end, bin_sizes, rshift);</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; }</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; }</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="comment">//Holds the bin vector and makes the initial recursive call</span></div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Div_type&gt;</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="comment">//Only use spreadsort if the integer can fit in a size_t</span></div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keyword">inline</span> <span class="keyword">typename</span> boost::enable_if_c&lt; <span class="keyword">sizeof</span>(Div_type) &lt;= <span class="keyword">sizeof</span>(<span class="keywordtype">size_t</span>),</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordtype">void</span> &gt;::type</div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <a class="code" href="namespaceboost_1_1sort.html#ae6ffbcf932699589fd2b93879f209013">integer_sort</a>(RandomAccessIter first, RandomAccessIter last, Div_type)</div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; {</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordtype">size_t</span> bin_sizes[1 &lt;&lt; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907acfdc43b3d7aa6df69b0f6982918056c7">max_finishing_splits</a>];</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; std::vector&lt;RandomAccessIter&gt; bin_cache;</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; spreadsort_rec&lt;RandomAccessIter, Div_type, size_t&gt;(first, last,</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; bin_cache, 0, bin_sizes);</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; }</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="comment">//Holds the bin vector and makes the initial recursive call</span></div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Div_type&gt;</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="comment">//Only use spreadsort if the integer can fit in a uintmax_t</span></div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keyword">inline</span> <span class="keyword">typename</span> boost::enable_if_c&lt; (sizeof(Div_type) &gt; <span class="keyword">sizeof</span>(size_t))</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; &amp;&amp; <span class="keyword">sizeof</span>(Div_type) &lt;= <span class="keyword">sizeof</span>(boost::uintmax_t), <span class="keywordtype">void</span> &gt;::type</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <a class="code" href="namespaceboost_1_1sort.html#ae6ffbcf932699589fd2b93879f209013">integer_sort</a>(RandomAccessIter first, RandomAccessIter last, Div_type)</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; {</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordtype">size_t</span> bin_sizes[1 &lt;&lt; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907acfdc43b3d7aa6df69b0f6982918056c7">max_finishing_splits</a>];</div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; std::vector&lt;RandomAccessIter&gt; bin_cache;</div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; spreadsort_rec&lt;RandomAccessIter, Div_type, boost::uintmax_t&gt;(first,</div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; last, bin_cache, 0, bin_sizes);</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; }</div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Div_type&gt;</div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keyword">inline</span> <span class="keyword">typename</span> boost::disable_if_c&lt; <span class="keyword">sizeof</span>(Div_type) &lt;= <span class="keyword">sizeof</span>(<span class="keywordtype">size_t</span>)</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; || <span class="keyword">sizeof</span>(Div_type) &lt;= <span class="keyword">sizeof</span>(boost::uintmax_t), <span class="keywordtype">void</span> &gt;::type</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="comment">//defaulting to std::sort when integer_sort won&#39;t work</span></div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="namespaceboost_1_1sort.html#ae6ffbcf932699589fd2b93879f209013">integer_sort</a>(RandomAccessIter first, RandomAccessIter last, Div_type)</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; {</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="comment">//Warning that we&#39;re using std::sort, even though integer_sort was called</span></div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; BOOST_STATIC_WARNING( <span class="keyword">sizeof</span>(Div_type) &lt;= <span class="keyword">sizeof</span>(<span class="keywordtype">size_t</span>) );</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; std::sort(first, last);</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; }</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;</div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="comment">//Same for the full functor version</span></div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>RandomAccessIter, <span class="keyword">class </span>Div_type, <span class="keyword">class </span>Right_shift,</div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keyword">class </span>Compare&gt;</div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="comment">//Only use spreadsort if the integer can fit in a size_t</span></div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keyword">inline</span> <span class="keyword">typename</span> boost::enable_if_c&lt; <span class="keyword">sizeof</span>(Div_type) &lt;= <span class="keyword">sizeof</span>(<span class="keywordtype">size_t</span>),</div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordtype">void</span> &gt;::type</div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <a class="code" href="namespaceboost_1_1sort.html#ae6ffbcf932699589fd2b93879f209013">integer_sort</a>(RandomAccessIter first, RandomAccessIter last, Div_type,</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; Right_shift shift, Compare comp)</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; {</div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordtype">size_t</span> bin_sizes[1 &lt;&lt; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907acfdc43b3d7aa6df69b0f6982918056c7">max_finishing_splits</a>];</div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; std::vector&lt;RandomAccessIter&gt; bin_cache;</div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; spreadsort_rec&lt;RandomAccessIter, Div_type, Right_shift, Compare,</div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; size_t, <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a2e171c91f6c9e1d82643e4b35a4c65de">int_log_mean_bin_size</a>, <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a53383c14d73d50ed8faaa695d820a5bf">int_log_min_split_count</a>,</div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907ae0c3ec0c116b92c92015245fd5024a27">int_log_finishing_count</a>&gt;</div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; (first, last, bin_cache, 0, bin_sizes, shift, comp);</div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; }</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;</div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>RandomAccessIter, <span class="keyword">class </span>Div_type, <span class="keyword">class </span>Right_shift,</div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keyword">class </span>Compare&gt;</div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="comment">//Only use spreadsort if the integer can fit in a uintmax_t</span></div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keyword">inline</span> <span class="keyword">typename</span> boost::enable_if_c&lt; (sizeof(Div_type) &gt; <span class="keyword">sizeof</span>(size_t))</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; &amp;&amp; <span class="keyword">sizeof</span>(Div_type) &lt;= <span class="keyword">sizeof</span>(boost::uintmax_t), <span class="keywordtype">void</span> &gt;::type</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <a class="code" href="namespaceboost_1_1sort.html#ae6ffbcf932699589fd2b93879f209013">integer_sort</a>(RandomAccessIter first, RandomAccessIter last, Div_type,</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; Right_shift shift, Compare comp)</div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; {</div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordtype">size_t</span> bin_sizes[1 &lt;&lt; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907acfdc43b3d7aa6df69b0f6982918056c7">max_finishing_splits</a>];</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; std::vector&lt;RandomAccessIter&gt; bin_cache;</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; spreadsort_rec&lt;RandomAccessIter, Div_type, Right_shift, Compare,</div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; boost::uintmax_t, <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a2e171c91f6c9e1d82643e4b35a4c65de">int_log_mean_bin_size</a>,</div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a53383c14d73d50ed8faaa695d820a5bf">int_log_min_split_count</a>, <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907ae0c3ec0c116b92c92015245fd5024a27">int_log_finishing_count</a>&gt;</div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; (first, last, bin_cache, 0, bin_sizes, shift, comp);</div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; }</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;</div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>RandomAccessIter, <span class="keyword">class </span>Div_type, <span class="keyword">class </span>Right_shift,</div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keyword">class </span>Compare&gt;</div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keyword">inline</span> <span class="keyword">typename</span> boost::disable_if_c&lt; <span class="keyword">sizeof</span>(Div_type) &lt;= <span class="keyword">sizeof</span>(<span class="keywordtype">size_t</span>)</div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; || <span class="keyword">sizeof</span>(Div_type) &lt;= <span class="keyword">sizeof</span>(boost::uintmax_t), <span class="keywordtype">void</span> &gt;::type</div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="comment">//defaulting to std::sort when integer_sort won&#39;t work</span></div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <a class="code" href="namespaceboost_1_1sort.html#ae6ffbcf932699589fd2b93879f209013">integer_sort</a>(RandomAccessIter first, RandomAccessIter last, Div_type,</div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; Right_shift shift, Compare comp)</div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; {</div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="comment">//Warning that we&#39;re using std::sort, even though integer_sort was called</span></div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; BOOST_STATIC_WARNING( <span class="keyword">sizeof</span>(Div_type) &lt;= <span class="keyword">sizeof</span>(<span class="keywordtype">size_t</span>) );</div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; std::sort(first, last, comp);</div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; }</div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;</div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;</div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="comment">//Same for the right shift version</span></div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Div_type, <span class="keyword">class</span> Right_shift&gt;</div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="comment">//Only use spreadsort if the integer can fit in a size_t</span></div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keyword">inline</span> <span class="keyword">typename</span> boost::enable_if_c&lt; <span class="keyword">sizeof</span>(Div_type) &lt;= <span class="keyword">sizeof</span>(<span class="keywordtype">size_t</span>),</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordtype">void</span> &gt;::type</div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <a class="code" href="namespaceboost_1_1sort.html#ae6ffbcf932699589fd2b93879f209013">integer_sort</a>(RandomAccessIter first, RandomAccessIter last, Div_type,</div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; Right_shift shift)</div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; {</div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keywordtype">size_t</span> bin_sizes[1 &lt;&lt; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907acfdc43b3d7aa6df69b0f6982918056c7">max_finishing_splits</a>];</div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; std::vector&lt;RandomAccessIter&gt; bin_cache;</div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; spreadsort_rec&lt;RandomAccessIter, Div_type, Right_shift, size_t,</div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a2e171c91f6c9e1d82643e4b35a4c65de">int_log_mean_bin_size</a>, <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a53383c14d73d50ed8faaa695d820a5bf">int_log_min_split_count</a>,</div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907ae0c3ec0c116b92c92015245fd5024a27">int_log_finishing_count</a>&gt;</div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; (first, last, bin_cache, 0, bin_sizes, shift);</div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; }</div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;</div>
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Div_type, <span class="keyword">class</span> Right_shift&gt;</div>
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="comment">//Only use spreadsort if the integer can fit in a uintmax_t</span></div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keyword">inline</span> <span class="keyword">typename</span> boost::enable_if_c&lt; (sizeof(Div_type) &gt; <span class="keyword">sizeof</span>(size_t))</div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; &amp;&amp; <span class="keyword">sizeof</span>(Div_type) &lt;= <span class="keyword">sizeof</span>(boost::uintmax_t), <span class="keywordtype">void</span> &gt;::type</div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <a class="code" href="namespaceboost_1_1sort.html#ae6ffbcf932699589fd2b93879f209013">integer_sort</a>(RandomAccessIter first, RandomAccessIter last, Div_type,</div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; Right_shift shift)</div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; {</div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordtype">size_t</span> bin_sizes[1 &lt;&lt; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907acfdc43b3d7aa6df69b0f6982918056c7">max_finishing_splits</a>];</div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; std::vector&lt;RandomAccessIter&gt; bin_cache;</div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; spreadsort_rec&lt;RandomAccessIter, Div_type, Right_shift,</div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; boost::uintmax_t, <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a2e171c91f6c9e1d82643e4b35a4c65de">int_log_mean_bin_size</a>,</div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a53383c14d73d50ed8faaa695d820a5bf">int_log_min_split_count</a>, <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907ae0c3ec0c116b92c92015245fd5024a27">int_log_finishing_count</a>&gt;</div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; (first, last, bin_cache, 0, bin_sizes, shift);</div>
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; }</div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;</div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Div_type, <span class="keyword">class</span> Right_shift&gt;</div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keyword">inline</span> <span class="keyword">typename</span> boost::disable_if_c&lt; <span class="keyword">sizeof</span>(Div_type) &lt;= <span class="keyword">sizeof</span>(<span class="keywordtype">size_t</span>)</div>
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; || <span class="keyword">sizeof</span>(Div_type) &lt;= <span class="keyword">sizeof</span>(boost::uintmax_t), <span class="keywordtype">void</span> &gt;::type</div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="comment">//defaulting to std::sort when integer_sort won&#39;t work</span></div>
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <a class="code" href="namespaceboost_1_1sort.html#ae6ffbcf932699589fd2b93879f209013">integer_sort</a>(RandomAccessIter first, RandomAccessIter last, Div_type,</div>
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; Right_shift shift)</div>
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; {</div>
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="comment">//Warning that we&#39;re using std::sort, even though integer_sort was called</span></div>
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; BOOST_STATIC_WARNING( <span class="keyword">sizeof</span>(Div_type) &lt;= <span class="keyword">sizeof</span>(<span class="keywordtype">size_t</span>) );</div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; std::sort(first, last);</div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; }</div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }</div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;}</div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;}<span class="comment"></span></div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;<span class="comment">//! \endcond</span></div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;</div>
<div class="ttc" id="namespaceboost_1_1sort_html_ae6ffbcf932699589fd2b93879f209013"><div class="ttname"><a href="namespaceboost_1_1sort.html#ae6ffbcf932699589fd2b93879f209013">boost::sort::integer_sort</a></div><div class="ttdeci">void integer_sort(RandomAccessIter first, RandomAccessIter last)</div><div class="ttdoc">Integer sort algorithm using random access iterators. (All variants fall back to std::sort if the dat...</div><div class="ttdef"><b>Definition:</b> integer_sort.hpp:78</div></div>
<div class="ttc" id="namespaceboost_html"><div class="ttname"><a href="namespaceboost.html">boost</a></div><div class="ttdef"><b>Definition:</b> constants.hpp:11</div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_a7bbd2027f75936442318063f34953907ae0c3ec0c116b92c92015245fd5024a27"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907ae0c3ec0c116b92c92015245fd5024a27">boost::sort::detail::int_log_finishing_count</a></div><div class="ttdef"><b>Definition:</b> constants.hpp:30</div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_a7bbd2027f75936442318063f34953907acfdc43b3d7aa6df69b0f6982918056c7"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907acfdc43b3d7aa6df69b0f6982918056c7">boost::sort::detail::max_finishing_splits</a></div><div class="ttdef"><b>Definition:</b> constants.hpp:22</div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_a4ba5c57512d16f300c08b7a6b4e6ff23"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#a4ba5c57512d16f300c08b7a6b4e6ff23">boost::sort::detail::get_min_count</a></div><div class="ttdeci">size_t get_min_count(unsigned log_range)</div><div class="ttdef"><b>Definition:</b> spreadsort_common.hpp:51</div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_a7bbd2027f75936442318063f34953907a53383c14d73d50ed8faaa695d820a5bf"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a53383c14d73d50ed8faaa695d820a5bf">boost::sort::detail::int_log_min_split_count</a></div><div class="ttdef"><b>Definition:</b> constants.hpp:27</div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_a7bbd2027f75936442318063f34953907a17b216febe1b5e8212a80231592fc9d9"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a17b216febe1b5e8212a80231592fc9d9">boost::sort::detail::max_splits</a></div><div class="ttdef"><b>Definition:</b> constants.hpp:19</div></div>
<div class="ttc" id="spreadsort__common_8hpp_html"><div class="ttname"><a href="spreadsort__common_8hpp.html">spreadsort_common.hpp</a></div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_a852a51cde62aa67347cb9b4a7350bbac"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#a852a51cde62aa67347cb9b4a7350bbac">boost::sort::detail::rough_log_2_size</a></div><div class="ttdeci">unsigned rough_log_2_size(const T &amp;input)</div><div class="ttdef"><b>Definition:</b> spreadsort_common.hpp:34</div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_a8aaa1645892e6f6845455605b48a5d0e"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#a8aaa1645892e6f6845455605b48a5d0e">boost::sort::detail::is_sorted_or_find_extremes</a></div><div class="ttdeci">bool is_sorted_or_find_extremes(RandomAccessIter current, RandomAccessIter last, Div_type &amp;max, Div_type &amp;min, Right_shift rshift)</div><div class="ttdef"><b>Definition:</b> float_sort.hpp:54</div></div>
<div class="ttc" id="constants_8hpp_html"><div class="ttname"><a href="constants_8hpp.html">constants.hpp</a></div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_ad5b7d31fba809eae5d17f5c2fb0a385b"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#ad5b7d31fba809eae5d17f5c2fb0a385b">boost::sort::detail::size_bins</a></div><div class="ttdeci">RandomAccessIter * size_bins(size_t *bin_sizes, std::vector&lt; RandomAccessIter &gt; &amp;bin_cache, unsigned cache_offset, unsigned &amp;cache_end, unsigned bin_count)</div><div class="ttdef"><b>Definition:</b> spreadsort_common.hpp:106</div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_a7bbd2027f75936442318063f34953907a2e171c91f6c9e1d82643e4b35a4c65de"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a2e171c91f6c9e1d82643e4b35a4c65de">boost::sort::detail::int_log_mean_bin_size</a></div><div class="ttdef"><b>Definition:</b> constants.hpp:24</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 7 2015 17:29:22 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,159 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/include/boost/sort/spreadsort/detail/string_sort.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_1878a3f4746a95c6aad317458cc7ef80.html">boost</a></li><li class="navelem"><a class="el" href="dir_0dcad0da4f36218cbabb216021de9867.html">sort</a></li><li class="navelem"><a class="el" href="dir_4aa236a92b75d6f514e733718a475329.html">spreadsort</a></li><li class="navelem"><a class="el" href="dir_1b6f0a484b3a75c2ed43dc394e95eff6.html">detail</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">string_sort.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;algorithm&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
<code>#include &lt;cstring&gt;</code><br />
<code>#include &lt;limits&gt;</code><br />
<code>#include &lt;functional&gt;</code><br />
<code>#include &lt;boost/static_assert.hpp&gt;</code><br />
<code>#include &lt;boost/serialization/static_warning.hpp&gt;</code><br />
<code>#include &lt;boost/utility/enable_if.hpp&gt;</code><br />
<code>#include &lt;<a class="el" href="constants_8hpp_source.html">boost/sort/spreadsort/detail/constants.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="spreadsort__common_8hpp_source.html">boost/sort/spreadsort/detail/spreadsort_common.hpp</a>&gt;</code><br />
<code>#include &lt;boost/cstdint.hpp&gt;</code><br />
</div>
<p><a href="detail_2string__sort_8hpp_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1sort_1_1detail_1_1offset__less__than.html">boost::sort::detail::offset_less_than&lt; Data_type, Unsigned_char_type &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1sort_1_1detail_1_1offset__greater__than.html">boost::sort::detail::offset_greater_than&lt; Data_type, Unsigned_char_type &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html">boost::sort::detail::offset_char_less_than&lt; Data_type, Get_char, Get_length &gt;</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespaceboost"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespaceboost_1_1sort"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort.html">boost::sort</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespaceboost_1_1sort_1_1detail"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort_1_1detail.html">boost::sort::detail</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a585497946eeb8cc1d2072642d7f1da01"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Unsigned_char_type &gt; </td></tr>
<tr class="memitem:a585497946eeb8cc1d2072642d7f1da01"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort_1_1detail.html#a585497946eeb8cc1d2072642d7f1da01">boost::sort::detail::update_offset</a> (RandomAccessIter first, RandomAccessIter finish, size_t &amp;char_offset)</td></tr>
<tr class="separator:a585497946eeb8cc1d2072642d7f1da01"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a415ebdb0c9a5e9209bbfc7d2e576374c"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Get_char , class Get_length &gt; </td></tr>
<tr class="memitem:a415ebdb0c9a5e9209bbfc7d2e576374c"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort_1_1detail.html#a415ebdb0c9a5e9209bbfc7d2e576374c">boost::sort::detail::update_offset</a> (RandomAccessIter first, RandomAccessIter finish, size_t &amp;char_offset, Get_char getchar, Get_length length)</td></tr>
<tr class="separator:a415ebdb0c9a5e9209bbfc7d2e576374c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad1655ab39e410e18b6e8b6694405e5ba"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Unsigned_char_type &gt; </td></tr>
<tr class="memitem:ad1655ab39e410e18b6e8b6694405e5ba"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort_1_1detail.html#ad1655ab39e410e18b6e8b6694405e5ba">boost::sort::detail::string_sort_rec</a> (RandomAccessIter first, RandomAccessIter last, size_t char_offset, std::vector&lt; RandomAccessIter &gt; &amp;bin_cache, unsigned cache_offset, size_t *bin_sizes)</td></tr>
<tr class="separator:ad1655ab39e410e18b6e8b6694405e5ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a66be693262defeff06a4a3507155d4a3"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Unsigned_char_type &gt; </td></tr>
<tr class="memitem:a66be693262defeff06a4a3507155d4a3"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort_1_1detail.html#a66be693262defeff06a4a3507155d4a3">boost::sort::detail::reverse_string_sort_rec</a> (RandomAccessIter first, RandomAccessIter last, size_t char_offset, std::vector&lt; RandomAccessIter &gt; &amp;bin_cache, unsigned cache_offset, size_t *bin_sizes)</td></tr>
<tr class="separator:a66be693262defeff06a4a3507155d4a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af825e4484173e0b886d0b24f66ae4a64"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Unsigned_char_type , class Get_char , class Get_length &gt; </td></tr>
<tr class="memitem:af825e4484173e0b886d0b24f66ae4a64"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort_1_1detail.html#af825e4484173e0b886d0b24f66ae4a64">boost::sort::detail::string_sort_rec</a> (RandomAccessIter first, RandomAccessIter last, size_t char_offset, std::vector&lt; RandomAccessIter &gt; &amp;bin_cache, unsigned cache_offset, size_t *bin_sizes, Get_char getchar, Get_length length)</td></tr>
<tr class="separator:af825e4484173e0b886d0b24f66ae4a64"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a49ccfc022cfef8a14bbbbeccd36d78ec"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Unsigned_char_type , class Get_char , class Get_length , class Compare &gt; </td></tr>
<tr class="memitem:a49ccfc022cfef8a14bbbbeccd36d78ec"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort_1_1detail.html#a49ccfc022cfef8a14bbbbeccd36d78ec">boost::sort::detail::string_sort_rec</a> (RandomAccessIter first, RandomAccessIter last, size_t char_offset, std::vector&lt; RandomAccessIter &gt; &amp;bin_cache, unsigned cache_offset, size_t *bin_sizes, Get_char getchar, Get_length length, Compare comp)</td></tr>
<tr class="separator:a49ccfc022cfef8a14bbbbeccd36d78ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab71cd7c25eada649fa1aff16fb3549f6"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Unsigned_char_type , class Get_char , class Get_length , class Compare &gt; </td></tr>
<tr class="memitem:ab71cd7c25eada649fa1aff16fb3549f6"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort_1_1detail.html#ab71cd7c25eada649fa1aff16fb3549f6">boost::sort::detail::reverse_string_sort_rec</a> (RandomAccessIter first, RandomAccessIter last, size_t char_offset, std::vector&lt; RandomAccessIter &gt; &amp;bin_cache, unsigned cache_offset, size_t *bin_sizes, Get_char getchar, Get_length length, Compare comp)</td></tr>
<tr class="separator:ab71cd7c25eada649fa1aff16fb3549f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 7 2015 17:29:22 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,939 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/include/boost/sort/spreadsort/detail/string_sort.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_1878a3f4746a95c6aad317458cc7ef80.html">boost</a></li><li class="navelem"><a class="el" href="dir_0dcad0da4f36218cbabb216021de9867.html">sort</a></li><li class="navelem"><a class="el" href="dir_4aa236a92b75d6f514e733718a475329.html">spreadsort</a></li><li class="navelem"><a class="el" href="dir_1b6f0a484b3a75c2ed43dc394e95eff6.html">detail</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">string_sort.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="detail_2string__sort_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Details for a templated general-case hybrid-radix string_sort.</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright Steven J. Ross 2001 - 2014.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Distributed under the Boost Software License, Version 1.0.</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// (See accompanying file LICENSE_1_0.txt or copy at</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// See http://www.boost.org/libs/sort for library home page.</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">Some improvements suggested by:</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">Phil Endecott and Frank Gennari</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef BOOST_SORT_SPREADSORT_DETAIL_SPREAD_SORT_HPP</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define BOOST_SORT_SPREADSORT_DETAIL_SPREAD_SORT_HPP</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &lt;cstring&gt;</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;limits&gt;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &lt;functional&gt;</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;boost/static_assert.hpp&gt;</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &lt;boost/serialization/static_warning.hpp&gt;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &lt;boost/utility/enable_if.hpp&gt;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="constants_8hpp.html">boost/sort/spreadsort/detail/constants.hpp</a>&gt;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="spreadsort__common_8hpp.html">boost/sort/spreadsort/detail/spreadsort_common.hpp</a>&gt;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &lt;boost/cstdint.hpp&gt;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceboost.html">boost</a> {</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">namespace </span>sort {</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">namespace </span>detail {</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> max_step_size = 64;</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="comment">//Offsetting on identical characters. This function works a chunk of</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="comment">//characters at a time for cache efficiency and optimal worst-case</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="comment">//performance.</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Un<span class="keywordtype">signed</span>_<span class="keywordtype">char</span>_type&gt;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#a585497946eeb8cc1d2072642d7f1da01"> 39</a></span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a585497946eeb8cc1d2072642d7f1da01">update_offset</a>(RandomAccessIter first, RandomAccessIter finish,</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordtype">size_t</span> &amp;char_offset)</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; {</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> char_size = <span class="keyword">sizeof</span>(Unsigned_char_type);</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">size_t</span> nextOffset = char_offset;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">int</span> step_size = max_step_size;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">true</span>) {</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; RandomAccessIter curr = first;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">do</span> {</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="comment">//Ignore empties, but if the nextOffset would exceed the length or</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="comment">//not match, exit; we&#39;ve found the last matching character</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="comment">//This will reduce the step_size if the current step doesn&#39;t match.</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> ((*curr).size() &gt; char_offset) {</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">if</span>((*curr).size() &lt;= (nextOffset + step_size)) {</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; step_size = (*curr).size() - nextOffset - 1;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">if</span> (step_size &lt; 1) {</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; char_offset = nextOffset;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> step_byte_size = step_size * char_size;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">if</span> (memcmp(curr-&gt;data() + nextOffset, first-&gt;data() + nextOffset, </div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; step_byte_size) != 0) {</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">if</span> (step_size == 1) {</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; char_offset = nextOffset;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; }</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; step_size = (step_size &gt; 4) ? 4 : 1;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; ++curr;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; } <span class="keywordflow">while</span> (curr != finish);</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; nextOffset += step_size;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; }</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="comment">//Offsetting on identical characters. This function works a character</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="comment">//at a time for optimal worst-case performance.</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Get_<span class="keywordtype">char</span>, <span class="keyword">class</span> Get_length&gt;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#a415ebdb0c9a5e9209bbfc7d2e576374c"> 80</a></span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a585497946eeb8cc1d2072642d7f1da01">update_offset</a>(RandomAccessIter first, RandomAccessIter finish,</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordtype">size_t</span> &amp;char_offset, Get_char getchar, Get_length length)</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordtype">size_t</span> nextOffset = char_offset;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">true</span>) {</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; RandomAccessIter curr = first;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">do</span> {</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="comment">//ignore empties, but if the nextOffset would exceed the length or</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="comment">//not match, exit; we&#39;ve found the last matching character</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">if</span> (length(*curr) &gt; char_offset &amp;&amp; (length(*curr) &lt;= (nextOffset + 1)</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; || getchar((*curr), nextOffset) != getchar((*first), nextOffset))) {</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; char_offset = nextOffset;</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; } <span class="keywordflow">while</span> (++curr != finish);</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; ++nextOffset;</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="comment">//This comparison functor assumes strings are identical up to char_offset</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> Data_type, <span class="keyword">class</span> Un<span class="keywordtype">signed</span>_<span class="keywordtype">char</span>_type&gt;</div>
<div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="structboost_1_1sort_1_1detail_1_1offset__less__than.html"> 101</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structboost_1_1sort_1_1detail_1_1offset__less__than.html">offset_less_than</a> {</div>
<div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="structboost_1_1sort_1_1detail_1_1offset__less__than.html#a0c153f50b29e9bea224df345c5ff1e91"> 102</a></span>&#160; <a class="code" href="structboost_1_1sort_1_1detail_1_1offset__less__than.html#a0c153f50b29e9bea224df345c5ff1e91">offset_less_than</a>(<span class="keywordtype">size_t</span> char_offset) : <a class="code" href="structboost_1_1sort_1_1detail_1_1offset__less__than.html#ae6d1402367790441b962b8cc9f066aac">fchar_offset</a>(char_offset){}</div>
<div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="structboost_1_1sort_1_1detail_1_1offset__less__than.html#a3f2184b627e54eb990bfe2022b6f8f06"> 103</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structboost_1_1sort_1_1detail_1_1offset__less__than.html#a3f2184b627e54eb990bfe2022b6f8f06">operator()</a>(<span class="keyword">const</span> Data_type &amp;x, <span class="keyword">const</span> Data_type &amp;y)<span class="keyword"> const</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordtype">size_t</span> minSize = (std::min)(x.size(), y.size());</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> u = <a class="code" href="structboost_1_1sort_1_1detail_1_1offset__less__than.html#ae6d1402367790441b962b8cc9f066aac">fchar_offset</a>; u &lt; minSize; ++u) {</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; BOOST_STATIC_ASSERT(<span class="keyword">sizeof</span>(x[u]) == <span class="keyword">sizeof</span>(Unsigned_char_type));</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">if</span> (static_cast&lt;Unsigned_char_type&gt;(x[u]) !=</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; static_cast&lt;Unsigned_char_type&gt;(y[u])) {</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Unsigned_char_type<span class="keyword">&gt;</span>(x[u]) &lt; </div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; static_cast&lt;Unsigned_char_type&gt;(y[u]);</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">return</span> x.size() &lt; y.size();</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div>
<div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="structboost_1_1sort_1_1detail_1_1offset__less__than.html#ae6d1402367790441b962b8cc9f066aac"> 116</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="structboost_1_1sort_1_1detail_1_1offset__less__than.html#ae6d1402367790441b962b8cc9f066aac">fchar_offset</a>;</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; };</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="comment">//Compares strings assuming they are identical up to char_offset</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> Data_type, <span class="keyword">class</span> Un<span class="keywordtype">signed</span>_<span class="keywordtype">char</span>_type&gt;</div>
<div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="structboost_1_1sort_1_1detail_1_1offset__greater__than.html"> 121</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structboost_1_1sort_1_1detail_1_1offset__greater__than.html">offset_greater_than</a> {</div>
<div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="structboost_1_1sort_1_1detail_1_1offset__greater__than.html#a9603b8028ace4872c6e056917c7889aa"> 122</a></span>&#160; <a class="code" href="structboost_1_1sort_1_1detail_1_1offset__greater__than.html#a9603b8028ace4872c6e056917c7889aa">offset_greater_than</a>(<span class="keywordtype">size_t</span> char_offset) : <a class="code" href="structboost_1_1sort_1_1detail_1_1offset__greater__than.html#a3ce63f721a5a4453317ffc0ea61a6243">fchar_offset</a>(char_offset){}</div>
<div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="structboost_1_1sort_1_1detail_1_1offset__greater__than.html#a2d28d7eb61a69c61c0362cfefa264d73"> 123</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structboost_1_1sort_1_1detail_1_1offset__greater__than.html#a2d28d7eb61a69c61c0362cfefa264d73">operator()</a>(<span class="keyword">const</span> Data_type &amp;x, <span class="keyword">const</span> Data_type &amp;y)<span class="keyword"> const</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordtype">size_t</span> minSize = (std::min)(x.size(), y.size());</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> u = <a class="code" href="structboost_1_1sort_1_1detail_1_1offset__greater__than.html#a3ce63f721a5a4453317ffc0ea61a6243">fchar_offset</a>; u &lt; minSize; ++u) {</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; BOOST_STATIC_ASSERT(<span class="keyword">sizeof</span>(x[u]) == <span class="keyword">sizeof</span>(Unsigned_char_type));</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">if</span> (static_cast&lt;Unsigned_char_type&gt;(x[u]) !=</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; static_cast&lt;Unsigned_char_type&gt;(y[u])) {</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Unsigned_char_type<span class="keyword">&gt;</span>(x[u]) &gt; </div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; static_cast&lt;Unsigned_char_type&gt;(y[u]);</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; }</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">return</span> x.size() &gt; y.size();</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div>
<div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="structboost_1_1sort_1_1detail_1_1offset__greater__than.html#a3ce63f721a5a4453317ffc0ea61a6243"> 136</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="structboost_1_1sort_1_1detail_1_1offset__greater__than.html#a3ce63f721a5a4453317ffc0ea61a6243">fchar_offset</a>;</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; };</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="comment">//This comparison functor assumes strings are identical up to char_offset</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> Data_type, <span class="keyword">class</span> Get_<span class="keywordtype">char</span>, <span class="keyword">class</span> Get_length&gt;</div>
<div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html"> 141</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html">offset_char_less_than</a> {</div>
<div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#a0716b085964e676c8c9735bafa783007"> 142</a></span>&#160; <a class="code" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#a0716b085964e676c8c9735bafa783007">offset_char_less_than</a>(<span class="keywordtype">size_t</span> char_offset) : <a class="code" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#ae5ee4abf81ecfb4ff4016792b81bfbd2">fchar_offset</a>(char_offset){}</div>
<div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#ad20c3572610e68d76c49dfff2eba2bf3"> 143</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#ad20c3572610e68d76c49dfff2eba2bf3">operator()</a>(<span class="keyword">const</span> Data_type &amp;x, <span class="keyword">const</span> Data_type &amp;y)<span class="keyword"> const</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordtype">size_t</span> minSize = (std::min)(<a class="code" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#a8ff12c3dcf4a6ea9942b8fc1e5046936">length</a>(x), <a class="code" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#a8ff12c3dcf4a6ea9942b8fc1e5046936">length</a>(y));</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> u = <a class="code" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#ae5ee4abf81ecfb4ff4016792b81bfbd2">fchar_offset</a>; u &lt; minSize; ++u) {</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#afb5424173c237d8cd25722a02c23ab30">getchar</a>(x, u) != <a class="code" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#afb5424173c237d8cd25722a02c23ab30">getchar</a>(y, u)) {</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#afb5424173c237d8cd25722a02c23ab30">getchar</a>(x, u) &lt; <a class="code" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#afb5424173c237d8cd25722a02c23ab30">getchar</a>(y, u);</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; }</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; }</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#a8ff12c3dcf4a6ea9942b8fc1e5046936">length</a>(x) &lt; <a class="code" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#a8ff12c3dcf4a6ea9942b8fc1e5046936">length</a>(y);</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div>
<div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#ae5ee4abf81ecfb4ff4016792b81bfbd2"> 153</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#ae5ee4abf81ecfb4ff4016792b81bfbd2">fchar_offset</a>;</div>
<div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#afb5424173c237d8cd25722a02c23ab30"> 154</a></span>&#160; Get_char <a class="code" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#afb5424173c237d8cd25722a02c23ab30">getchar</a>;</div>
<div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#a8ff12c3dcf4a6ea9942b8fc1e5046936"> 155</a></span>&#160; Get_length <a class="code" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#a8ff12c3dcf4a6ea9942b8fc1e5046936">length</a>;</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; };</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="comment">//String sorting recursive implementation</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Un<span class="keywordtype">signed</span>_<span class="keywordtype">char</span>_type&gt;</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#ad1655ab39e410e18b6e8b6694405e5ba"> 161</a></span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#ad1655ab39e410e18b6e8b6694405e5ba">string_sort_rec</a>(RandomAccessIter first, RandomAccessIter last,</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordtype">size_t</span> char_offset,</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; std::vector&lt;RandomAccessIter&gt; &amp;bin_cache,</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordtype">unsigned</span> cache_offset, <span class="keywordtype">size_t</span> *bin_sizes)</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; {</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> std::iterator_traits&lt;RandomAccessIter&gt;::value_type</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; Data_type;</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="comment">//This section makes handling of long identical substrings much faster</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="comment">//with a mild average performance impact.</span></div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="comment">//Iterate to the end of the empties. If all empty, return</span></div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">while</span> ((*first).size() &lt;= char_offset) {</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">if</span> (++first == last)</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; RandomAccessIter finish = last - 1;</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="comment">//Getting the last non-empty</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">for</span> (;(*finish).size() &lt;= char_offset; --finish);</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; ++finish;</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="comment">//Offsetting on identical characters. This section works</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="comment">//a few characters at a time for optimal worst-case performance.</span></div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; update_offset&lt;RandomAccessIter, Unsigned_char_type&gt;(first, finish,</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; char_offset);</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; </div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> bin_count = (1 &lt;&lt; (<span class="keyword">sizeof</span>(Unsigned_char_type)*8));</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="comment">//Equal worst-case of radix and comparison is when bin_count = n*log(n).</span></div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> max_size = bin_count;</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> membin_count = bin_count + 1;</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordtype">unsigned</span> cache_end;</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; RandomAccessIter * bins = <a class="code" href="namespaceboost_1_1sort_1_1detail.html#ad5b7d31fba809eae5d17f5c2fb0a385b">size_bins</a>(bin_sizes, bin_cache, cache_offset,</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; cache_end, membin_count) + 1;</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="comment">//Calculating the size of each bin; this takes roughly 10% of runtime</span></div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">for</span> (RandomAccessIter current = first; current != last; ++current) {</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">if</span> ((*current).size() &lt;= char_offset) {</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; bin_sizes[0]++;</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; }</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; bin_sizes[<span class="keyword">static_cast&lt;</span>Unsigned_char_type<span class="keyword">&gt;</span>((*current)[char_offset])</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; + 1]++;</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; }</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="comment">//Assign the bin positions</span></div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; bin_cache[cache_offset] = first;</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = 0; u &lt; membin_count - 1; u++)</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; bin_cache[cache_offset + u + 1] =</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; bin_cache[cache_offset + u] + bin_sizes[u];</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="comment">//Swap into place</span></div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; RandomAccessIter next_bin_start = first;</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="comment">//handling empty bins</span></div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; RandomAccessIter * local_bin = &amp;(bin_cache[cache_offset]);</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; next_bin_start += bin_sizes[0];</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; RandomAccessIter * target_bin;</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="comment">//Iterating over each element in the bin of empties</span></div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">for</span> (RandomAccessIter current = *local_bin; current &lt; next_bin_start;</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; ++current) {</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="comment">//empties belong in this bin</span></div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">while</span> ((*current).size() &gt; char_offset) {</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; target_bin =</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; bins + <span class="keyword">static_cast&lt;</span>Unsigned_char_type<span class="keyword">&gt;</span>((*current)[char_offset]);</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; iter_swap(current, (*target_bin)++);</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; }</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; }</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; *local_bin = next_bin_start;</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="comment">//iterate backwards to find the last bin with elements in it</span></div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="comment">//this saves iterations in multiple loops</span></div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordtype">unsigned</span> last_bin = bin_count - 1;</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">for</span> (; last_bin &amp;&amp; !bin_sizes[last_bin + 1]; --last_bin);</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="comment">//This dominates runtime, mostly in the swap and bin lookups</span></div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = 0; u &lt; last_bin; ++u) {</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; local_bin = bins + u;</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; next_bin_start += bin_sizes[u + 1];</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="comment">//Iterating over each element in this bin</span></div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">for</span> (RandomAccessIter current = *local_bin; current &lt; next_bin_start;</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; ++current) {</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="comment">//Swapping into place until the correct element has been swapped in</span></div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">for</span> (target_bin = bins + static_cast&lt;Unsigned_char_type&gt;</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; ((*current)[char_offset]); target_bin != local_bin;</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; target_bin = bins + <span class="keyword">static_cast&lt;</span>Unsigned_char_type<span class="keyword">&gt;</span></div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; ((*current)[char_offset])) iter_swap(current, (*target_bin)++);</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; }</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; *local_bin = next_bin_start;</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; }</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; bins[last_bin] = last;</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="comment">//Recursing</span></div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; RandomAccessIter lastPos = bin_cache[cache_offset];</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="comment">//Skip this loop for empties</span></div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = cache_offset + 1; u &lt; cache_offset + last_bin + 2;</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; lastPos = bin_cache[u], ++u) {</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordtype">size_t</span> count = bin_cache[u] - lastPos;</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="comment">//don&#39;t sort unless there are at least two items to Compare</span></div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">if</span> (count &lt; 2)</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="comment">//using std::sort if its worst-case is better</span></div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">if</span> (count &lt; max_size)</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; std::sort(lastPos, bin_cache[u],</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <a class="code" href="structboost_1_1sort_1_1detail_1_1offset__less__than.html">offset_less_than&lt;Data_type, Unsigned_char_type&gt;</a>(char_offset + 1));</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; string_sort_rec&lt;RandomAccessIter, Unsigned_char_type&gt;(lastPos,</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; bin_cache[u], char_offset + 1, bin_cache, cache_end, bin_sizes);</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; }</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; }</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="comment">//Sorts strings in reverse order, with empties at the end</span></div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Un<span class="keywordtype">signed</span>_<span class="keywordtype">char</span>_type&gt;</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#a66be693262defeff06a4a3507155d4a3"> 266</a></span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a66be693262defeff06a4a3507155d4a3">reverse_string_sort_rec</a>(RandomAccessIter first, RandomAccessIter last,</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordtype">size_t</span> char_offset,</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; std::vector&lt;RandomAccessIter&gt; &amp;bin_cache,</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordtype">unsigned</span> cache_offset,</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordtype">size_t</span> *bin_sizes)</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; {</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> std::iterator_traits&lt;RandomAccessIter&gt;::value_type</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; Data_type;</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="comment">//This section makes handling of long identical substrings much faster</span></div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="comment">//with a mild average performance impact.</span></div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; RandomAccessIter curr = first;</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="comment">//Iterate to the end of the empties. If all empty, return</span></div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">while</span> ((*curr).size() &lt;= char_offset) {</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">if</span> (++curr == last)</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; }</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="comment">//Getting the last non-empty</span></div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">while</span> ((*(--last)).size() &lt;= char_offset);</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; ++last;</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="comment">//Offsetting on identical characters. This section works</span></div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="comment">//a few characters at a time for optimal worst-case performance.</span></div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; update_offset&lt;RandomAccessIter, Unsigned_char_type&gt;(first, last,</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; char_offset);</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; RandomAccessIter * target_bin;</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> bin_count = (1 &lt;&lt; (<span class="keyword">sizeof</span>(Unsigned_char_type)*8));</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="comment">//Equal worst-case of radix and comparison when bin_count = n*log(n).</span></div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> max_size = bin_count;</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> membin_count = bin_count + 1;</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> max_bin = bin_count - 1;</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordtype">unsigned</span> cache_end;</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; RandomAccessIter * bins = <a class="code" href="namespaceboost_1_1sort_1_1detail.html#ad5b7d31fba809eae5d17f5c2fb0a385b">size_bins</a>(bin_sizes, bin_cache, cache_offset,</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; cache_end, membin_count);</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; RandomAccessIter * end_bin = &amp;(bin_cache[cache_offset + max_bin]);</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="comment">//Calculating the size of each bin; this takes roughly 10% of runtime</span></div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">for</span> (RandomAccessIter current = first; current != last; ++current) {</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">if</span> ((*current).size() &lt;= char_offset) {</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; bin_sizes[bin_count]++;</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; }</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; bin_sizes[max_bin - <span class="keyword">static_cast&lt;</span>Unsigned_char_type<span class="keyword">&gt;</span></div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; ((*current)[char_offset])]++;</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; }</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="comment">//Assign the bin positions</span></div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; bin_cache[cache_offset] = first;</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = 0; u &lt; membin_count - 1; u++)</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; bin_cache[cache_offset + u + 1] =</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; bin_cache[cache_offset + u] + bin_sizes[u];</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="comment">//Swap into place</span></div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; RandomAccessIter next_bin_start = last;</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="comment">//handling empty bins</span></div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; RandomAccessIter * local_bin = &amp;(bin_cache[cache_offset + bin_count]);</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; RandomAccessIter lastFull = *local_bin;</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="comment">//Iterating over each element in the bin of empties</span></div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">for</span> (RandomAccessIter current = *local_bin; current &lt; next_bin_start;</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; ++current) {</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="comment">//empties belong in this bin</span></div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">while</span> ((*current).size() &gt; char_offset) {</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; target_bin =</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; end_bin - <span class="keyword">static_cast&lt;</span>Unsigned_char_type<span class="keyword">&gt;</span>((*current)[char_offset]);</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; iter_swap(current, (*target_bin)++);</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; }</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; }</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; *local_bin = next_bin_start;</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; next_bin_start = first;</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="comment">//iterate backwards to find the last non-empty bin</span></div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="comment">//this saves iterations in multiple loops</span></div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordtype">unsigned</span> last_bin = max_bin;</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">for</span> (; last_bin &amp;&amp; !bin_sizes[last_bin]; --last_bin);</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="comment">//This dominates runtime, mostly in the swap and bin lookups</span></div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = 0; u &lt; last_bin; ++u) {</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; local_bin = bins + u;</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; next_bin_start += bin_sizes[u];</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="comment">//Iterating over each element in this bin</span></div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">for</span> (RandomAccessIter current = *local_bin; current &lt; next_bin_start;</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; ++current) {</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="comment">//Swapping into place until the correct element has been swapped in</span></div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordflow">for</span> (target_bin =</div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; end_bin - static_cast&lt;Unsigned_char_type&gt;((*current)[char_offset]);</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; target_bin != local_bin;</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; target_bin =</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; end_bin - <span class="keyword">static_cast&lt;</span>Unsigned_char_type<span class="keyword">&gt;</span>((*current)[char_offset]))</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; iter_swap(current, (*target_bin)++);</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; }</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; *local_bin = next_bin_start;</div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; bins[last_bin] = lastFull;</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="comment">//Recursing</span></div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; RandomAccessIter lastPos = first;</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="comment">//Skip this loop for empties</span></div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = cache_offset; u &lt;= cache_offset + last_bin;</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; lastPos = bin_cache[u], ++u) {</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordtype">size_t</span> count = bin_cache[u] - lastPos;</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="comment">//don&#39;t sort unless there are at least two items to Compare</span></div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">if</span> (count &lt; 2)</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="comment">//using std::sort if its worst-case is better</span></div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">if</span> (count &lt; max_size)</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; std::sort(lastPos, bin_cache[u], <a class="code" href="structboost_1_1sort_1_1detail_1_1offset__greater__than.html">offset_greater_than</a>&lt;Data_type,</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; Unsigned_char_type&gt;(char_offset + 1));</div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; reverse_string_sort_rec&lt;RandomAccessIter, Unsigned_char_type&gt;</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; (lastPos, bin_cache[u], char_offset + 1, bin_cache, cache_end, bin_sizes);</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; }</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; }</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="comment">//String sorting recursive implementation</span></div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>RandomAccessIter, <span class="keyword">class </span>Unsigned_char_type, <span class="keyword">class </span>Get_char,</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keyword">class </span>Get_length&gt;</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00378"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#af825e4484173e0b886d0b24f66ae4a64"> 378</a></span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#ad1655ab39e410e18b6e8b6694405e5ba">string_sort_rec</a>(RandomAccessIter first, RandomAccessIter last,</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordtype">size_t</span> char_offset, std::vector&lt;RandomAccessIter&gt; &amp;bin_cache,</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordtype">unsigned</span> cache_offset, <span class="keywordtype">size_t</span> *bin_sizes,</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; Get_char getchar, Get_length length)</div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; {</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> std::iterator_traits&lt;RandomAccessIter&gt;::value_type</div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; Data_type;</div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="comment">//This section makes handling of long identical substrings much faster</span></div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="comment">//with a mild average performance impact.</span></div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="comment">//Iterate to the end of the empties. If all empty, return</span></div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">while</span> (length(*first) &lt;= char_offset) {</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">if</span> (++first == last)</div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; }</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; RandomAccessIter finish = last - 1;</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="comment">//Getting the last non-empty</span></div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">for</span> (;length(*finish) &lt;= char_offset; --finish);</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; ++finish;</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a585497946eeb8cc1d2072642d7f1da01">update_offset</a>(first, finish, char_offset, getchar, length);</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> bin_count = (1 &lt;&lt; (<span class="keyword">sizeof</span>(Unsigned_char_type)*8));</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="comment">//Equal worst-case of radix and comparison is when bin_count = n*log(n).</span></div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> max_size = bin_count;</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> membin_count = bin_count + 1;</div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordtype">unsigned</span> cache_end;</div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; RandomAccessIter * bins = <a class="code" href="namespaceboost_1_1sort_1_1detail.html#ad5b7d31fba809eae5d17f5c2fb0a385b">size_bins</a>(bin_sizes, bin_cache, cache_offset,</div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; cache_end, membin_count) + 1;</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;</div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="comment">//Calculating the size of each bin; this takes roughly 10% of runtime</span></div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">for</span> (RandomAccessIter current = first; current != last; ++current) {</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">if</span> (length(*current) &lt;= char_offset) {</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; bin_sizes[0]++;</div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; }</div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; bin_sizes[getchar((*current), char_offset) + 1]++;</div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; }</div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="comment">//Assign the bin positions</span></div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; bin_cache[cache_offset] = first;</div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = 0; u &lt; membin_count - 1; u++)</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; bin_cache[cache_offset + u + 1] =</div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; bin_cache[cache_offset + u] + bin_sizes[u];</div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;</div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="comment">//Swap into place</span></div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; RandomAccessIter next_bin_start = first;</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="comment">//handling empty bins</span></div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; RandomAccessIter * local_bin = &amp;(bin_cache[cache_offset]);</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; next_bin_start += bin_sizes[0];</div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; RandomAccessIter * target_bin;</div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="comment">//Iterating over each element in the bin of empties</span></div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">for</span> (RandomAccessIter current = *local_bin; current &lt; next_bin_start;</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; ++current) {</div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="comment">//empties belong in this bin</span></div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keywordflow">while</span> (length(*current) &gt; char_offset) {</div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; target_bin = bins + getchar((*current), char_offset);</div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; iter_swap(current, (*target_bin)++);</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; }</div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; }</div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; *local_bin = next_bin_start;</div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="comment">//iterate backwards to find the last bin with elements in it</span></div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="comment">//this saves iterations in multiple loops</span></div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordtype">unsigned</span> last_bin = bin_count - 1;</div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">for</span> (; last_bin &amp;&amp; !bin_sizes[last_bin + 1]; --last_bin);</div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="comment">//This dominates runtime, mostly in the swap and bin lookups</span></div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> ii = 0; ii &lt; last_bin; ++ii) {</div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; local_bin = bins + ii;</div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; next_bin_start += bin_sizes[ii + 1];</div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="comment">//Iterating over each element in this bin</span></div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">for</span> (RandomAccessIter current = *local_bin; current &lt; next_bin_start;</div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; ++current) {</div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="comment">//Swapping into place until the correct element has been swapped in</span></div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keywordflow">for</span> (target_bin = bins + getchar((*current), char_offset);</div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; target_bin != local_bin;</div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; target_bin = bins + getchar((*current), char_offset))</div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; iter_swap(current, (*target_bin)++);</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; }</div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; *local_bin = next_bin_start;</div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; }</div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; bins[last_bin] = last;</div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;</div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="comment">//Recursing</span></div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; RandomAccessIter lastPos = bin_cache[cache_offset];</div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="comment">//Skip this loop for empties</span></div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = cache_offset + 1; u &lt; cache_offset + last_bin + 2;</div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; lastPos = bin_cache[u], ++u) {</div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordtype">size_t</span> count = bin_cache[u] - lastPos;</div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="comment">//don&#39;t sort unless there are at least two items to Compare</span></div>
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keywordflow">if</span> (count &lt; 2)</div>
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="comment">//using std::sort if its worst-case is better</span></div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">if</span> (count &lt; max_size)</div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; std::sort(lastPos, bin_cache[u], <a class="code" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html">offset_char_less_than</a>&lt;Data_type,</div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; Get_char, Get_length&gt;(char_offset + 1));</div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#ad1655ab39e410e18b6e8b6694405e5ba">string_sort_rec</a>&lt;RandomAccessIter, Unsigned_char_type, Get_char,</div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; Get_length&gt;(lastPos, bin_cache[u], char_offset + 1, bin_cache,</div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; cache_end, bin_sizes, getchar, length);</div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; }</div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; }</div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;</div>
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="comment">//String sorting recursive implementation</span></div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>RandomAccessIter, <span class="keyword">class </span>Unsigned_char_type, <span class="keyword">class </span>Get_char,</div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keyword">class </span>Get_length, <span class="keyword">class </span>Compare&gt;</div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00481"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#a49ccfc022cfef8a14bbbbeccd36d78ec"> 481</a></span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#ad1655ab39e410e18b6e8b6694405e5ba">string_sort_rec</a>(RandomAccessIter first, RandomAccessIter last,</div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordtype">size_t</span> char_offset, std::vector&lt;RandomAccessIter&gt; &amp;bin_cache,</div>
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordtype">unsigned</span> cache_offset, <span class="keywordtype">size_t</span> *bin_sizes,</div>
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; Get_char getchar, Get_length length, Compare comp)</div>
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; {</div>
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="comment">//This section makes handling of long identical substrings much faster</span></div>
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="comment">//with a mild average performance impact.</span></div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="comment">//Iterate to the end of the empties. If all empty, return</span></div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keywordflow">while</span> (length(*first) &lt;= char_offset) {</div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keywordflow">if</span> (++first == last)</div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; }</div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; RandomAccessIter finish = last - 1;</div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="comment">//Getting the last non-empty</span></div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">for</span> (;length(*finish) &lt;= char_offset; --finish);</div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; ++finish;</div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a585497946eeb8cc1d2072642d7f1da01">update_offset</a>(first, finish, char_offset, getchar, length);</div>
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;</div>
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> bin_count = (1 &lt;&lt; (<span class="keyword">sizeof</span>(Unsigned_char_type)*8));</div>
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="comment">//Equal worst-case of radix and comparison is when bin_count = n*log(n).</span></div>
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> max_size = bin_count;</div>
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> membin_count = bin_count + 1;</div>
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordtype">unsigned</span> cache_end;</div>
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; RandomAccessIter * bins = <a class="code" href="namespaceboost_1_1sort_1_1detail.html#ad5b7d31fba809eae5d17f5c2fb0a385b">size_bins</a>(bin_sizes, bin_cache, cache_offset,</div>
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; cache_end, membin_count) + 1;</div>
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;</div>
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="comment">//Calculating the size of each bin; this takes roughly 10% of runtime</span></div>
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="keywordflow">for</span> (RandomAccessIter current = first; current != last; ++current) {</div>
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordflow">if</span> (length(*current) &lt;= char_offset) {</div>
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; bin_sizes[0]++;</div>
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; }</div>
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; bin_sizes[getchar((*current), char_offset) + 1]++;</div>
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; }</div>
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="comment">//Assign the bin positions</span></div>
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; bin_cache[cache_offset] = first;</div>
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = 0; u &lt; membin_count - 1; u++)</div>
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; bin_cache[cache_offset + u + 1] =</div>
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; bin_cache[cache_offset + u] + bin_sizes[u];</div>
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;</div>
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="comment">//Swap into place</span></div>
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; RandomAccessIter next_bin_start = first;</div>
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="comment">//handling empty bins</span></div>
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; RandomAccessIter * local_bin = &amp;(bin_cache[cache_offset]);</div>
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; next_bin_start += bin_sizes[0];</div>
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; RandomAccessIter * target_bin;</div>
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="comment">//Iterating over each element in the bin of empties</span></div>
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="keywordflow">for</span> (RandomAccessIter current = *local_bin; current &lt; next_bin_start;</div>
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; ++current) {</div>
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="comment">//empties belong in this bin</span></div>
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">while</span> (length(*current) &gt; char_offset) {</div>
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; target_bin = bins + getchar((*current), char_offset);</div>
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; iter_swap(current, (*target_bin)++);</div>
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; }</div>
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; }</div>
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; *local_bin = next_bin_start;</div>
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="comment">//iterate backwards to find the last bin with elements in it</span></div>
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="comment">//this saves iterations in multiple loops</span></div>
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordtype">unsigned</span> last_bin = bin_count - 1;</div>
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keywordflow">for</span> (; last_bin &amp;&amp; !bin_sizes[last_bin + 1]; --last_bin);</div>
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="comment">//This dominates runtime, mostly in the swap and bin lookups</span></div>
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = 0; u &lt; last_bin; ++u) {</div>
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; local_bin = bins + u;</div>
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; next_bin_start += bin_sizes[u + 1];</div>
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="comment">//Iterating over each element in this bin</span></div>
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="keywordflow">for</span> (RandomAccessIter current = *local_bin; current &lt; next_bin_start;</div>
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; ++current) {</div>
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="comment">//Swapping into place until the correct element has been swapped in</span></div>
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">for</span> (target_bin = bins + getchar((*current), char_offset);</div>
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; target_bin != local_bin;</div>
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; target_bin = bins + getchar((*current), char_offset))</div>
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; iter_swap(current, (*target_bin)++);</div>
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; }</div>
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; *local_bin = next_bin_start;</div>
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; }</div>
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; bins[last_bin] = last;</div>
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160;</div>
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="comment">//Recursing</span></div>
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; RandomAccessIter lastPos = bin_cache[cache_offset];</div>
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="comment">//Skip this loop for empties</span></div>
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = cache_offset + 1; u &lt; cache_offset + last_bin + 2;</div>
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; lastPos = bin_cache[u], ++u) {</div>
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="keywordtype">size_t</span> count = bin_cache[u] - lastPos;</div>
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="comment">//don&#39;t sort unless there are at least two items to Compare</span></div>
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">if</span> (count &lt; 2)</div>
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="comment">//using std::sort if its worst-case is better</span></div>
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">if</span> (count &lt; max_size)</div>
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; std::sort(lastPos, bin_cache[u], comp);</div>
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#ad1655ab39e410e18b6e8b6694405e5ba">string_sort_rec</a>&lt;RandomAccessIter, Unsigned_char_type, Get_char,</div>
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; Get_length, Compare&gt;</div>
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; (lastPos, bin_cache[u], char_offset + 1, bin_cache, cache_end,</div>
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; bin_sizes, getchar, length, comp);</div>
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; }</div>
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; }</div>
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;</div>
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="comment">//Sorts strings in reverse order, with empties at the end</span></div>
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>RandomAccessIter, <span class="keyword">class </span>Unsigned_char_type, <span class="keyword">class </span>Get_char,</div>
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keyword">class </span>Get_length, <span class="keyword">class </span>Compare&gt;</div>
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00582"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort_1_1detail.html#ab71cd7c25eada649fa1aff16fb3549f6"> 582</a></span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a66be693262defeff06a4a3507155d4a3">reverse_string_sort_rec</a>(RandomAccessIter first, RandomAccessIter last,</div>
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordtype">size_t</span> char_offset, std::vector&lt;RandomAccessIter&gt; &amp;bin_cache,</div>
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="keywordtype">unsigned</span> cache_offset, <span class="keywordtype">size_t</span> *bin_sizes,</div>
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; Get_char getchar, Get_length length, Compare comp)</div>
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; {</div>
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="comment">//This section makes handling of long identical substrings much faster</span></div>
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="comment">//with a mild average performance impact.</span></div>
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; RandomAccessIter curr = first;</div>
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <span class="comment">//Iterate to the end of the empties. If all empty, return</span></div>
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="keywordflow">while</span> (length(*curr) &lt;= char_offset) {</div>
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordflow">if</span> (++curr == last)</div>
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; }</div>
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="comment">//Getting the last non-empty</span></div>
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordflow">while</span> (length(*(--last)) &lt;= char_offset);</div>
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; ++last;</div>
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="comment">//Offsetting on identical characters. This section works</span></div>
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="comment">//a character at a time for optimal worst-case performance.</span></div>
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a585497946eeb8cc1d2072642d7f1da01">update_offset</a>(curr, last, char_offset, getchar, length);</div>
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;</div>
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> bin_count = (1 &lt;&lt; (<span class="keyword">sizeof</span>(Unsigned_char_type)*8));</div>
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="comment">//Equal worst-case of radix and comparison is when bin_count = n*log(n).</span></div>
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> max_size = bin_count;</div>
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> membin_count = bin_count + 1;</div>
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> max_bin = bin_count - 1;</div>
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keywordtype">unsigned</span> cache_end;</div>
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; RandomAccessIter * bins = <a class="code" href="namespaceboost_1_1sort_1_1detail.html#ad5b7d31fba809eae5d17f5c2fb0a385b">size_bins</a>(bin_sizes, bin_cache, cache_offset,</div>
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; cache_end, membin_count);</div>
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; RandomAccessIter *end_bin = &amp;(bin_cache[cache_offset + max_bin]);</div>
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;</div>
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="comment">//Calculating the size of each bin; this takes roughly 10% of runtime</span></div>
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keywordflow">for</span> (RandomAccessIter current = first; current != last; ++current) {</div>
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="keywordflow">if</span> (length(*current) &lt;= char_offset) {</div>
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; bin_sizes[bin_count]++;</div>
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; }</div>
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; bin_sizes[max_bin - getchar((*current), char_offset)]++;</div>
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; }</div>
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="comment">//Assign the bin positions</span></div>
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; bin_cache[cache_offset] = first;</div>
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = 0; u &lt; membin_count - 1; u++)</div>
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; bin_cache[cache_offset + u + 1] =</div>
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; bin_cache[cache_offset + u] + bin_sizes[u];</div>
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;</div>
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="comment">//Swap into place</span></div>
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; RandomAccessIter next_bin_start = last;</div>
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="comment">//handling empty bins</span></div>
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; RandomAccessIter * local_bin = &amp;(bin_cache[cache_offset + bin_count]);</div>
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; RandomAccessIter lastFull = *local_bin;</div>
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; RandomAccessIter * target_bin;</div>
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="comment">//Iterating over each element in the bin of empties</span></div>
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keywordflow">for</span> (RandomAccessIter current = *local_bin; current &lt; next_bin_start;</div>
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; ++current) {</div>
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="comment">//empties belong in this bin</span></div>
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">while</span> (length(*current) &gt; char_offset) {</div>
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; target_bin = end_bin - getchar((*current), char_offset);</div>
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; iter_swap(current, (*target_bin)++);</div>
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; }</div>
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; }</div>
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; *local_bin = next_bin_start;</div>
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; next_bin_start = first;</div>
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="comment">//iterate backwards to find the last bin with elements in it</span></div>
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="comment">//this saves iterations in multiple loops</span></div>
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordtype">unsigned</span> last_bin = max_bin;</div>
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">for</span> (; last_bin &amp;&amp; !bin_sizes[last_bin]; --last_bin);</div>
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="comment">//This dominates runtime, mostly in the swap and bin lookups</span></div>
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = 0; u &lt; last_bin; ++u) {</div>
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; local_bin = bins + u;</div>
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; next_bin_start += bin_sizes[u];</div>
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="comment">//Iterating over each element in this bin</span></div>
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keywordflow">for</span> (RandomAccessIter current = *local_bin; current &lt; next_bin_start;</div>
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; ++current) {</div>
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="comment">//Swapping into place until the correct element has been swapped in</span></div>
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keywordflow">for</span> (target_bin = end_bin - getchar((*current), char_offset);</div>
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; target_bin != local_bin;</div>
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; target_bin = end_bin - getchar((*current), char_offset))</div>
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; iter_swap(current, (*target_bin)++);</div>
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; }</div>
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; *local_bin = next_bin_start;</div>
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; }</div>
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; bins[last_bin] = lastFull;</div>
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="comment">//Recursing</span></div>
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; RandomAccessIter lastPos = first;</div>
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="comment">//Skip this loop for empties</span></div>
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> u = cache_offset; u &lt;= cache_offset + last_bin;</div>
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; lastPos = bin_cache[u], ++u) {</div>
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="keywordtype">size_t</span> count = bin_cache[u] - lastPos;</div>
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="comment">//don&#39;t sort unless there are at least two items to Compare</span></div>
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keywordflow">if</span> (count &lt; 2)</div>
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="comment">//using std::sort if its worst-case is better</span></div>
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keywordflow">if</span> (count &lt; max_size)</div>
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; std::sort(lastPos, bin_cache[u], comp);</div>
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a66be693262defeff06a4a3507155d4a3">reverse_string_sort_rec</a>&lt;RandomAccessIter, Unsigned_char_type,</div>
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; Get_char, Get_length, Compare&gt;</div>
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; (lastPos, bin_cache[u], char_offset + 1, bin_cache, cache_end,</div>
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; bin_sizes, getchar, length, comp);</div>
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; }</div>
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; }</div>
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160;</div>
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="comment">//Holds the bin vector and makes the initial recursive call</span></div>
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Un<span class="keywordtype">signed</span>_<span class="keywordtype">char</span>_type&gt;</div>
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="keyword">inline</span> <span class="keyword">typename</span> boost::enable_if_c&lt; <span class="keyword">sizeof</span>(Unsigned_char_type) &lt;= 2, <span class="keywordtype">void</span></div>
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; &gt;::type</div>
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <a class="code" href="namespaceboost_1_1sort.html#a950a2dbbe75f048a0b343dbf7c532dc0">string_sort</a>(RandomAccessIter first, RandomAccessIter last,</div>
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; Unsigned_char_type)</div>
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; {</div>
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keywordtype">size_t</span> bin_sizes[(1 &lt;&lt; (8 * <span class="keyword">sizeof</span>(Unsigned_char_type))) + 1];</div>
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; std::vector&lt;RandomAccessIter&gt; bin_cache;</div>
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; string_sort_rec&lt;RandomAccessIter, Unsigned_char_type&gt;</div>
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; (first, last, 0, bin_cache, 0, bin_sizes);</div>
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; }</div>
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160;</div>
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Un<span class="keywordtype">signed</span>_<span class="keywordtype">char</span>_type&gt;</div>
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="keyword">inline</span> <span class="keyword">typename</span> boost::disable_if_c&lt; <span class="keyword">sizeof</span>(Unsigned_char_type) &lt;= 2, <span class="keywordtype">void</span></div>
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; &gt;::type</div>
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <a class="code" href="namespaceboost_1_1sort.html#a950a2dbbe75f048a0b343dbf7c532dc0">string_sort</a>(RandomAccessIter first, RandomAccessIter last,</div>
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; Unsigned_char_type)</div>
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; {</div>
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <span class="comment">//Warning that we&#39;re using std::sort, even though string_sort was called</span></div>
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; BOOST_STATIC_WARNING( <span class="keyword">sizeof</span>(Unsigned_char_type) &lt;= 2 );</div>
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; std::sort(first, last);</div>
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; }</div>
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160;</div>
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="comment">//Holds the bin vector and makes the initial recursive call</span></div>
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Un<span class="keywordtype">signed</span>_<span class="keywordtype">char</span>_type&gt;</div>
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keyword">inline</span> <span class="keyword">typename</span> boost::enable_if_c&lt; <span class="keyword">sizeof</span>(Unsigned_char_type) &lt;= 2, <span class="keywordtype">void</span></div>
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; &gt;::type</div>
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <a class="code" href="namespaceboost_1_1sort.html#a4ad4785d90f47d51ff1d2fac8c21bb48">reverse_string_sort</a>(RandomAccessIter first, RandomAccessIter last,</div>
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; Unsigned_char_type)</div>
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; {</div>
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="keywordtype">size_t</span> bin_sizes[(1 &lt;&lt; (8 * <span class="keyword">sizeof</span>(Unsigned_char_type))) + 1];</div>
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; std::vector&lt;RandomAccessIter&gt; bin_cache;</div>
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; reverse_string_sort_rec&lt;RandomAccessIter, Unsigned_char_type&gt;</div>
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; (first, last, 0, bin_cache, 0, bin_sizes);</div>
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; }</div>
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160;</div>
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Un<span class="keywordtype">signed</span>_<span class="keywordtype">char</span>_type&gt;</div>
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="keyword">inline</span> <span class="keyword">typename</span> boost::disable_if_c&lt; <span class="keyword">sizeof</span>(Unsigned_char_type) &lt;= 2, <span class="keywordtype">void</span></div>
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; &gt;::type</div>
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <a class="code" href="namespaceboost_1_1sort.html#a4ad4785d90f47d51ff1d2fac8c21bb48">reverse_string_sort</a>(RandomAccessIter first, RandomAccessIter last,</div>
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; Unsigned_char_type)</div>
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; {</div>
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> std::iterator_traits&lt;RandomAccessIter&gt;::value_type</div>
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; Data_type;</div>
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="comment">//Warning that we&#39;re using std::sort, even though string_sort was called</span></div>
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; BOOST_STATIC_WARNING( <span class="keyword">sizeof</span>(Unsigned_char_type) &lt;= 2 );</div>
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; std::sort(first, last, std::greater&lt;Data_type&gt;());</div>
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; }</div>
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160;</div>
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <span class="comment">//Holds the bin vector and makes the initial recursive call</span></div>
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>RandomAccessIter, <span class="keyword">class </span>Get_char, <span class="keyword">class </span>Get_length,</div>
<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keyword">class </span>Unsigned_char_type&gt;</div>
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keyword">inline</span> <span class="keyword">typename</span> boost::enable_if_c&lt; <span class="keyword">sizeof</span>(Unsigned_char_type) &lt;= 2, <span class="keywordtype">void</span></div>
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; &gt;::type</div>
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <a class="code" href="namespaceboost_1_1sort.html#a950a2dbbe75f048a0b343dbf7c532dc0">string_sort</a>(RandomAccessIter first, RandomAccessIter last,</div>
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; Get_char getchar, Get_length length, Unsigned_char_type)</div>
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; {</div>
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="keywordtype">size_t</span> bin_sizes[(1 &lt;&lt; (8 * <span class="keyword">sizeof</span>(Unsigned_char_type))) + 1];</div>
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; std::vector&lt;RandomAccessIter&gt; bin_cache;</div>
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#ad1655ab39e410e18b6e8b6694405e5ba">string_sort_rec</a>&lt;RandomAccessIter, Unsigned_char_type, Get_char,</div>
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; Get_length&gt;(first, last, 0, bin_cache, 0, bin_sizes, getchar, length);</div>
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; }</div>
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160;</div>
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>RandomAccessIter, <span class="keyword">class </span>Get_char, <span class="keyword">class </span>Get_length,</div>
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <span class="keyword">class </span>Unsigned_char_type&gt;</div>
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <span class="keyword">inline</span> <span class="keyword">typename</span> boost::disable_if_c&lt; <span class="keyword">sizeof</span>(Unsigned_char_type) &lt;= 2, <span class="keywordtype">void</span></div>
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; &gt;::type</div>
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <a class="code" href="namespaceboost_1_1sort.html#a950a2dbbe75f048a0b343dbf7c532dc0">string_sort</a>(RandomAccessIter first, RandomAccessIter last,</div>
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; Get_char getchar, Get_length length, Unsigned_char_type)</div>
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; {</div>
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <span class="comment">//Warning that we&#39;re using std::sort, even though string_sort was called</span></div>
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; BOOST_STATIC_WARNING( <span class="keyword">sizeof</span>(Unsigned_char_type) &lt;= 2 );</div>
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; std::sort(first, last);</div>
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; }</div>
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160;</div>
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <span class="comment">//Holds the bin vector and makes the initial recursive call</span></div>
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>RandomAccessIter, <span class="keyword">class </span>Get_char, <span class="keyword">class </span>Get_length,</div>
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; <span class="keyword">class </span>Compare, <span class="keyword">class </span>Unsigned_char_type&gt;</div>
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; <span class="keyword">inline</span> <span class="keyword">typename</span> boost::enable_if_c&lt; <span class="keyword">sizeof</span>(Unsigned_char_type) &lt;= 2, <span class="keywordtype">void</span></div>
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; &gt;::type</div>
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <a class="code" href="namespaceboost_1_1sort.html#a950a2dbbe75f048a0b343dbf7c532dc0">string_sort</a>(RandomAccessIter first, RandomAccessIter last,</div>
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; Get_char getchar, Get_length length, Compare comp, Unsigned_char_type)</div>
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; {</div>
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keywordtype">size_t</span> bin_sizes[(1 &lt;&lt; (8 * <span class="keyword">sizeof</span>(Unsigned_char_type))) + 1];</div>
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; std::vector&lt;RandomAccessIter&gt; bin_cache;</div>
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#ad1655ab39e410e18b6e8b6694405e5ba">string_sort_rec</a>&lt;RandomAccessIter, Unsigned_char_type, Get_char</div>
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; , Get_length, Compare&gt;</div>
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; (first, last, 0, bin_cache, 0, bin_sizes, getchar, length, comp);</div>
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; }</div>
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;</div>
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="comment">//disable_if_c was refusing to compile, so rewrote to use enable_if_c</span></div>
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>RandomAccessIter, <span class="keyword">class </span>Get_char, <span class="keyword">class </span>Get_length,</div>
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="keyword">class </span>Compare, <span class="keyword">class </span>Unsigned_char_type&gt;</div>
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="keyword">inline</span> <span class="keyword">typename</span> boost::enable_if_c&lt; (sizeof(Unsigned_char_type) &gt; 2), <span class="keywordtype">void</span></div>
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; &gt;::type</div>
<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <a class="code" href="namespaceboost_1_1sort.html#a950a2dbbe75f048a0b343dbf7c532dc0">string_sort</a>(RandomAccessIter first, RandomAccessIter last,</div>
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; Get_char getchar, Get_length length, Compare comp, Unsigned_char_type)</div>
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; {</div>
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="comment">//Warning that we&#39;re using std::sort, even though string_sort was called</span></div>
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; BOOST_STATIC_WARNING( <span class="keyword">sizeof</span>(Unsigned_char_type) &lt;= 2 );</div>
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; std::sort(first, last, comp);</div>
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; }</div>
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160;</div>
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <span class="comment">//Holds the bin vector and makes the initial recursive call</span></div>
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>RandomAccessIter, <span class="keyword">class </span>Get_char, <span class="keyword">class </span>Get_length,</div>
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="keyword">class </span>Compare, <span class="keyword">class </span>Unsigned_char_type&gt;</div>
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="keyword">inline</span> <span class="keyword">typename</span> boost::enable_if_c&lt; <span class="keyword">sizeof</span>(Unsigned_char_type) &lt;= 2, <span class="keywordtype">void</span></div>
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; &gt;::type</div>
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <a class="code" href="namespaceboost_1_1sort.html#a4ad4785d90f47d51ff1d2fac8c21bb48">reverse_string_sort</a>(RandomAccessIter first, RandomAccessIter last,</div>
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; Get_char getchar, Get_length length, Compare comp, Unsigned_char_type)</div>
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; {</div>
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <span class="keywordtype">size_t</span> bin_sizes[(1 &lt;&lt; (8 * <span class="keyword">sizeof</span>(Unsigned_char_type))) + 1];</div>
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; std::vector&lt;RandomAccessIter&gt; bin_cache;</div>
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a66be693262defeff06a4a3507155d4a3">reverse_string_sort_rec</a>&lt;RandomAccessIter, Unsigned_char_type, Get_char,</div>
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; Get_length, Compare&gt;</div>
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; (first, last, 0, bin_cache, 0, bin_sizes, getchar, length, comp);</div>
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; }</div>
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160;</div>
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class </span>RandomAccessIter, <span class="keyword">class </span>Get_char, <span class="keyword">class </span>Get_length,</div>
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <span class="keyword">class </span>Compare, <span class="keyword">class </span>Unsigned_char_type&gt;</div>
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="keyword">inline</span> <span class="keyword">typename</span> boost::disable_if_c&lt; <span class="keyword">sizeof</span>(Unsigned_char_type) &lt;= 2, <span class="keywordtype">void</span></div>
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; &gt;::type</div>
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <a class="code" href="namespaceboost_1_1sort.html#a4ad4785d90f47d51ff1d2fac8c21bb48">reverse_string_sort</a>(RandomAccessIter first, RandomAccessIter last,</div>
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; Get_char getchar, Get_length length, Compare comp, Unsigned_char_type)</div>
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; {</div>
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="comment">//Warning that we&#39;re using std::sort, even though string_sort was called</span></div>
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; BOOST_STATIC_WARNING( <span class="keyword">sizeof</span>(Unsigned_char_type) &lt;= 2 );</div>
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; std::sort(first, last, comp);</div>
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; }</div>
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; }</div>
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160;}</div>
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160;}</div>
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160;</div>
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_a585497946eeb8cc1d2072642d7f1da01"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#a585497946eeb8cc1d2072642d7f1da01">boost::sort::detail::update_offset</a></div><div class="ttdeci">void update_offset(RandomAccessIter first, RandomAccessIter finish, size_t &amp;char_offset)</div><div class="ttdef"><b>Definition:</b> string_sort.hpp:39</div></div>
<div class="ttc" id="namespaceboost_html"><div class="ttname"><a href="namespaceboost.html">boost</a></div><div class="ttdef"><b>Definition:</b> constants.hpp:11</div></div>
<div class="ttc" id="structboost_1_1sort_1_1detail_1_1offset__char__less__than_html_a0716b085964e676c8c9735bafa783007"><div class="ttname"><a href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#a0716b085964e676c8c9735bafa783007">boost::sort::detail::offset_char_less_than::offset_char_less_than</a></div><div class="ttdeci">offset_char_less_than(size_t char_offset)</div><div class="ttdef"><b>Definition:</b> string_sort.hpp:142</div></div>
<div class="ttc" id="structboost_1_1sort_1_1detail_1_1offset__greater__than_html_a2d28d7eb61a69c61c0362cfefa264d73"><div class="ttname"><a href="structboost_1_1sort_1_1detail_1_1offset__greater__than.html#a2d28d7eb61a69c61c0362cfefa264d73">boost::sort::detail::offset_greater_than::operator()</a></div><div class="ttdeci">bool operator()(const Data_type &amp;x, const Data_type &amp;y) const </div><div class="ttdef"><b>Definition:</b> string_sort.hpp:123</div></div>
<div class="ttc" id="structboost_1_1sort_1_1detail_1_1offset__greater__than_html_a3ce63f721a5a4453317ffc0ea61a6243"><div class="ttname"><a href="structboost_1_1sort_1_1detail_1_1offset__greater__than.html#a3ce63f721a5a4453317ffc0ea61a6243">boost::sort::detail::offset_greater_than::fchar_offset</a></div><div class="ttdeci">size_t fchar_offset</div><div class="ttdef"><b>Definition:</b> string_sort.hpp:136</div></div>
<div class="ttc" id="structboost_1_1sort_1_1detail_1_1offset__greater__than_html"><div class="ttname"><a href="structboost_1_1sort_1_1detail_1_1offset__greater__than.html">boost::sort::detail::offset_greater_than</a></div><div class="ttdef"><b>Definition:</b> string_sort.hpp:121</div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_ad1655ab39e410e18b6e8b6694405e5ba"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#ad1655ab39e410e18b6e8b6694405e5ba">boost::sort::detail::string_sort_rec</a></div><div class="ttdeci">void string_sort_rec(RandomAccessIter first, RandomAccessIter last, size_t char_offset, std::vector&lt; RandomAccessIter &gt; &amp;bin_cache, unsigned cache_offset, size_t *bin_sizes)</div><div class="ttdef"><b>Definition:</b> string_sort.hpp:161</div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_a66be693262defeff06a4a3507155d4a3"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#a66be693262defeff06a4a3507155d4a3">boost::sort::detail::reverse_string_sort_rec</a></div><div class="ttdeci">void reverse_string_sort_rec(RandomAccessIter first, RandomAccessIter last, size_t char_offset, std::vector&lt; RandomAccessIter &gt; &amp;bin_cache, unsigned cache_offset, size_t *bin_sizes)</div><div class="ttdef"><b>Definition:</b> string_sort.hpp:266</div></div>
<div class="ttc" id="structboost_1_1sort_1_1detail_1_1offset__less__than_html_a0c153f50b29e9bea224df345c5ff1e91"><div class="ttname"><a href="structboost_1_1sort_1_1detail_1_1offset__less__than.html#a0c153f50b29e9bea224df345c5ff1e91">boost::sort::detail::offset_less_than::offset_less_than</a></div><div class="ttdeci">offset_less_than(size_t char_offset)</div><div class="ttdef"><b>Definition:</b> string_sort.hpp:102</div></div>
<div class="ttc" id="structboost_1_1sort_1_1detail_1_1offset__char__less__than_html_ae5ee4abf81ecfb4ff4016792b81bfbd2"><div class="ttname"><a href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#ae5ee4abf81ecfb4ff4016792b81bfbd2">boost::sort::detail::offset_char_less_than::fchar_offset</a></div><div class="ttdeci">size_t fchar_offset</div><div class="ttdef"><b>Definition:</b> string_sort.hpp:153</div></div>
<div class="ttc" id="namespaceboost_1_1sort_html_a950a2dbbe75f048a0b343dbf7c532dc0"><div class="ttname"><a href="namespaceboost_1_1sort.html#a950a2dbbe75f048a0b343dbf7c532dc0">boost::sort::string_sort</a></div><div class="ttdeci">void string_sort(RandomAccessIter first, RandomAccessIter last, Unsigned_char_type unused)</div><div class="ttdef"><b>Definition:</b> string_sort.hpp:29</div></div>
<div class="ttc" id="structboost_1_1sort_1_1detail_1_1offset__char__less__than_html"><div class="ttname"><a href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html">boost::sort::detail::offset_char_less_than</a></div><div class="ttdef"><b>Definition:</b> string_sort.hpp:141</div></div>
<div class="ttc" id="spreadsort__common_8hpp_html"><div class="ttname"><a href="spreadsort__common_8hpp.html">spreadsort_common.hpp</a></div></div>
<div class="ttc" id="namespaceboost_1_1sort_html_a4ad4785d90f47d51ff1d2fac8c21bb48"><div class="ttname"><a href="namespaceboost_1_1sort.html#a4ad4785d90f47d51ff1d2fac8c21bb48">boost::sort::reverse_string_sort</a></div><div class="ttdeci">void reverse_string_sort(RandomAccessIter first, RandomAccessIter last, Compare comp, Unsigned_char_type unused)</div><div class="ttdef"><b>Definition:</b> string_sort.hpp:49</div></div>
<div class="ttc" id="structboost_1_1sort_1_1detail_1_1offset__less__than_html"><div class="ttname"><a href="structboost_1_1sort_1_1detail_1_1offset__less__than.html">boost::sort::detail::offset_less_than</a></div><div class="ttdef"><b>Definition:</b> string_sort.hpp:101</div></div>
<div class="ttc" id="structboost_1_1sort_1_1detail_1_1offset__greater__than_html_a9603b8028ace4872c6e056917c7889aa"><div class="ttname"><a href="structboost_1_1sort_1_1detail_1_1offset__greater__than.html#a9603b8028ace4872c6e056917c7889aa">boost::sort::detail::offset_greater_than::offset_greater_than</a></div><div class="ttdeci">offset_greater_than(size_t char_offset)</div><div class="ttdef"><b>Definition:</b> string_sort.hpp:122</div></div>
<div class="ttc" id="structboost_1_1sort_1_1detail_1_1offset__less__than_html_a3f2184b627e54eb990bfe2022b6f8f06"><div class="ttname"><a href="structboost_1_1sort_1_1detail_1_1offset__less__than.html#a3f2184b627e54eb990bfe2022b6f8f06">boost::sort::detail::offset_less_than::operator()</a></div><div class="ttdeci">bool operator()(const Data_type &amp;x, const Data_type &amp;y) const </div><div class="ttdef"><b>Definition:</b> string_sort.hpp:103</div></div>
<div class="ttc" id="constants_8hpp_html"><div class="ttname"><a href="constants_8hpp.html">constants.hpp</a></div></div>
<div class="ttc" id="structboost_1_1sort_1_1detail_1_1offset__less__than_html_ae6d1402367790441b962b8cc9f066aac"><div class="ttname"><a href="structboost_1_1sort_1_1detail_1_1offset__less__than.html#ae6d1402367790441b962b8cc9f066aac">boost::sort::detail::offset_less_than::fchar_offset</a></div><div class="ttdeci">size_t fchar_offset</div><div class="ttdef"><b>Definition:</b> string_sort.hpp:116</div></div>
<div class="ttc" id="structboost_1_1sort_1_1detail_1_1offset__char__less__than_html_a8ff12c3dcf4a6ea9942b8fc1e5046936"><div class="ttname"><a href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#a8ff12c3dcf4a6ea9942b8fc1e5046936">boost::sort::detail::offset_char_less_than::length</a></div><div class="ttdeci">Get_length length</div><div class="ttdef"><b>Definition:</b> string_sort.hpp:155</div></div>
<div class="ttc" id="namespaceboost_1_1sort_1_1detail_html_ad5b7d31fba809eae5d17f5c2fb0a385b"><div class="ttname"><a href="namespaceboost_1_1sort_1_1detail.html#ad5b7d31fba809eae5d17f5c2fb0a385b">boost::sort::detail::size_bins</a></div><div class="ttdeci">RandomAccessIter * size_bins(size_t *bin_sizes, std::vector&lt; RandomAccessIter &gt; &amp;bin_cache, unsigned cache_offset, unsigned &amp;cache_end, unsigned bin_count)</div><div class="ttdef"><b>Definition:</b> spreadsort_common.hpp:106</div></div>
<div class="ttc" id="structboost_1_1sort_1_1detail_1_1offset__char__less__than_html_afb5424173c237d8cd25722a02c23ab30"><div class="ttname"><a href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#afb5424173c237d8cd25722a02c23ab30">boost::sort::detail::offset_char_less_than::getchar</a></div><div class="ttdeci">Get_char getchar</div><div class="ttdef"><b>Definition:</b> string_sort.hpp:154</div></div>
<div class="ttc" id="structboost_1_1sort_1_1detail_1_1offset__char__less__than_html_ad20c3572610e68d76c49dfff2eba2bf3"><div class="ttname"><a href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#ad20c3572610e68d76c49dfff2eba2bf3">boost::sort::detail::offset_char_less_than::operator()</a></div><div class="ttdeci">bool operator()(const Data_type &amp;x, const Data_type &amp;y) const </div><div class="ttdef"><b>Definition:</b> string_sort.hpp:143</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 7 2015 17:29:22 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,105 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/include/boost/sort Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_1878a3f4746a95c6aad317458cc7ef80.html">boost</a></li><li class="navelem"><a class="el" href="dir_0dcad0da4f36218cbabb216021de9867.html">sort</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">sort Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
Directories</h2></td></tr>
<tr class="memitem:dir_4aa236a92b75d6f514e733718a475329"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_4aa236a92b75d6f514e733718a475329.html">spreadsort</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
Files</h2></td></tr>
<tr class="memitem:sort_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="sort_8hpp.html">sort.hpp</a> <a href="sort_8hpp_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,100 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/include/boost Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_1878a3f4746a95c6aad317458cc7ef80.html">boost</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">boost Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
Directories</h2></td></tr>
<tr class="memitem:dir_0dcad0da4f36218cbabb216021de9867"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_0dcad0da4f36218cbabb216021de9867.html">sort</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,108 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/include/boost/sort/spreadsort/detail Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_1878a3f4746a95c6aad317458cc7ef80.html">boost</a></li><li class="navelem"><a class="el" href="dir_0dcad0da4f36218cbabb216021de9867.html">sort</a></li><li class="navelem"><a class="el" href="dir_4aa236a92b75d6f514e733718a475329.html">spreadsort</a></li><li class="navelem"><a class="el" href="dir_1b6f0a484b3a75c2ed43dc394e95eff6.html">detail</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">detail Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
Files</h2></td></tr>
<tr class="memitem:constants_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="constants_8hpp.html">constants.hpp</a> <a href="constants_8hpp_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:detail_2float__sort_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="detail_2float__sort_8hpp.html">float_sort.hpp</a> <a href="detail_2float__sort_8hpp_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:detail_2integer__sort_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="detail_2integer__sort_8hpp.html">integer_sort.hpp</a> <a href="detail_2integer__sort_8hpp_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:spreadsort__common_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="spreadsort__common_8hpp.html">spreadsort_common.hpp</a> <a href="spreadsort__common_8hpp_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:detail_2string__sort_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="detail_2string__sort_8hpp.html">string_sort.hpp</a> <a href="detail_2string__sort_8hpp_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 7 2015 17:29:22 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,106 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/include/boost/sort/spreadsort Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_1878a3f4746a95c6aad317458cc7ef80.html">boost</a></li><li class="navelem"><a class="el" href="dir_0dcad0da4f36218cbabb216021de9867.html">sort</a></li><li class="navelem"><a class="el" href="dir_4aa236a92b75d6f514e733718a475329.html">spreadsort</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">spreadsort Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
Files</h2></td></tr>
<tr class="memitem:float__sort_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="float__sort_8hpp.html">float_sort.hpp</a> <a href="float__sort_8hpp_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:integer__sort_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="integer__sort_8hpp.html">integer_sort.hpp</a> <a href="integer__sort_8hpp_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:spreadsort_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="spreadsort_8hpp.html">spreadsort.hpp</a> <a href="spreadsort_8hpp_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:string__sort_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="string__sort_8hpp.html">string_sort.hpp</a> <a href="string__sort_8hpp_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,151 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/example Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html">example</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">example Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
Files</h2></td></tr>
<tr class="memitem:alrbreaker_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="alrbreaker_8cpp.html">alrbreaker.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:alreadysorted_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="alreadysorted_8cpp.html">alreadysorted.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:binaryalrbreaker_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="binaryalrbreaker_8cpp.html">binaryalrbreaker.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:boostrandomgen_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="boostrandomgen_8cpp.html">boostrandomgen.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:caseinsensitive_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="caseinsensitive_8cpp.html">caseinsensitive.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:charstringsample_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="charstringsample_8cpp.html">charstringsample.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:double_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="double_8cpp.html">double.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:floatfunctorsample_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="floatfunctorsample_8cpp.html">floatfunctorsample.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:floatsample_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="floatsample_8cpp.html">floatsample.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:generalizedstruct_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generalizedstruct_8cpp.html">generalizedstruct.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:int64_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="int64_8cpp.html">int64.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:keyplusdatasample_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="keyplusdatasample_8cpp.html">keyplusdatasample.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:mostlysorted_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mostlysorted_8cpp.html">mostlysorted.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:parallelint_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="parallelint_8cpp.html">parallelint.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:parallelstring_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="parallelstring_8cpp.html">parallelstring.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:randomgen_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="randomgen_8cpp.html">randomgen.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:reverseintsample_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="reverseintsample_8cpp.html">reverseintsample.cpp</a></td></tr>
<tr class="memdesc:reverseintsample_8cpp"><td class="mdescLeft">&#160;</td><td class="mdescRight">integer sort with a rightshift functor reverse sorting example. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:reversestringfunctorsample_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="reversestringfunctorsample_8cpp.html">reversestringfunctorsample.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:reversestringsample_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="reversestringsample_8cpp.html">reversestringsample.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:rightshiftsample_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rightshiftsample_8cpp.html">rightshiftsample.cpp</a></td></tr>
<tr class="memdesc:rightshiftsample_8cpp"><td class="mdescLeft">&#160;</td><td class="mdescRight">Integer sort with a rightshift functor sorting example. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:sample_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="sample_8cpp.html">sample.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:shiftfloatsample_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="shiftfloatsample_8cpp.html">shiftfloatsample.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:stringfunctorsample_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stringfunctorsample_8cpp.html">stringfunctorsample.cpp</a></td></tr>
<tr class="memdesc:stringfunctorsample_8cpp"><td class="mdescLeft">&#160;</td><td class="mdescRight">spreadsort string functor sorting example. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:stringsample_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="stringsample_8cpp.html">stringsample.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:wstringsample_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="wstringsample_8cpp.html">wstringsample.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,100 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/include Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">include Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
Directories</h2></td></tr>
<tr class="memitem:dir_1878a3f4746a95c6aad317458cc7ef80"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_1878a3f4746a95c6aad317458cc7ef80.html">boost</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

BIN
doc/doxygen/html/doc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 B

View File

@@ -0,0 +1,177 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/example/double.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html">example</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">double.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="spreadsort_8hpp_source.html">boost/sort/spreadsort/spreadsort.hpp</a>&gt;</code><br />
<code>#include &lt;time.h&gt;</code><br />
<code>#include &lt;stdio.h&gt;</code><br />
<code>#include &lt;stdlib.h&gt;</code><br />
<code>#include &lt;algorithm&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
<code>#include &lt;fstream&gt;</code><br />
<code>#include &lt;iostream&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:afb8c72ce35c4a1f4a2588d6573e54aa1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="double_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a>&#160;&#160;&#160;double</td></tr>
<tr class="separator:afb8c72ce35c4a1f4a2588d6573e54aa1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a38779bfd63dd113c9f7602664546a58c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="double_8cpp.html#a38779bfd63dd113c9f7602664546a58c">CAST_TYPE</a>&#160;&#160;&#160;boost::int64_t</td></tr>
<tr class="separator:a38779bfd63dd113c9f7602664546a58c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a217dbf8b442f20279ea00b898af96f52"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="double_8cpp.html#a217dbf8b442f20279ea00b898af96f52">main</a> (int argc, const char **argv)</td></tr>
<tr class="separator:a217dbf8b442f20279ea00b898af96f52"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="a38779bfd63dd113c9f7602664546a58c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CAST_TYPE&#160;&#160;&#160;boost::int64_t</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="afb8c72ce35c4a1f4a2588d6573e54aa1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define <a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a>&#160;&#160;&#160;double</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a217dbf8b442f20279ea00b898af96f52"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char **&#160;</td>
<td class="paramname"><em>argv</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

1449
doc/doxygen/html/doxygen.css Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@@ -0,0 +1,97 @@
function toggleVisibility(linkObj)
{
var base = $(linkObj).attr('id');
var summary = $('#'+base+'-summary');
var content = $('#'+base+'-content');
var trigger = $('#'+base+'-trigger');
var src=$(trigger).attr('src');
if (content.is(':visible')===true) {
content.hide();
summary.show();
$(linkObj).addClass('closed').removeClass('opened');
$(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
content.show();
summary.hide();
$(linkObj).removeClass('closed').addClass('opened');
$(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
}
return false;
}
function updateStripes()
{
$('table.directory tr').
removeClass('even').filter(':visible:even').addClass('even');
}
function toggleLevel(level)
{
$('table.directory tr').each(function() {
var l = this.id.split('_').length-1;
var i = $('#img'+this.id.substring(3));
var a = $('#arr'+this.id.substring(3));
if (l<level+1) {
i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
a.html('&#9660;');
$(this).show();
} else if (l==level+1) {
i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
a.html('&#9658;');
$(this).show();
} else {
$(this).hide();
}
});
updateStripes();
}
function toggleFolder(id)
{
// the clicked row
var currentRow = $('#row_'+id);
// all rows after the clicked row
var rows = currentRow.nextAll("tr");
var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
// only match elements AFTER this one (can't hide elements before)
var childRows = rows.filter(function() { return this.id.match(re); });
// first row is visible we are HIDING
if (childRows.filter(':first').is(':visible')===true) {
// replace down arrow by right arrow for current row
var currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
currentRowSpans.filter(".arrow").html('&#9658;');
rows.filter("[id^=row_"+id+"]").hide(); // hide all children
} else { // we are SHOWING
// replace right arrow by down arrow for current row
var currentRowSpans = currentRow.find("span");
currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
currentRowSpans.filter(".arrow").html('&#9660;');
// replace down arrows by right arrows for child rows
var childRowsSpans = childRows.find("span");
childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
childRowsSpans.filter(".arrow").html('&#9658;');
childRows.show(); //show all children
}
updateStripes();
}
function toggleInherit(id)
{
var rows = $('tr.inherit.'+id);
var img = $('tr.inherit_header.'+id+' img');
var src = $(img).attr('src');
if (rows.filter(':first').is(':visible')===true) {
rows.css('display','none');
$(img).attr('src',src.substring(0,src.length-8)+'closed.png');
} else {
rows.css('display','table-row'); // using show() causes jump in firefox
$(img).attr('src',src.substring(0,src.length-10)+'open.png');
}
}

View File

@@ -0,0 +1,95 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: Examples</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li class="current"><a href="examples.html"><span>Examples</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Examples</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all examples:</div><ul>
<li><a class="el" href="_2example_2sample_8cpp-example.html">/example/sample.cpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Tue Jan 6 2015 16:36:35 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

135
doc/doxygen/html/files.html Normal file
View File

@@ -0,0 +1,135 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: File List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li class="current"><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">File List</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all files with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span><span onclick="javascript:toggleLevel(4);">4</span><span onclick="javascript:toggleLevel(5);">5</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span id="img_0_" class="iconfopen" onclick="toggleFolder('0_')">&#160;</span><a class="el" href="dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html" target="_self">example</a></td><td class="desc"></td></tr>
<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="alrbreaker_8cpp.html" target="_self">alrbreaker.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="alreadysorted_8cpp.html" target="_self">alreadysorted.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="binaryalrbreaker_8cpp.html" target="_self">binaryalrbreaker.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="boostrandomgen_8cpp.html" target="_self">boostrandomgen.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_4_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="caseinsensitive_8cpp.html" target="_self">caseinsensitive.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="charstringsample_8cpp.html" target="_self">charstringsample.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_6_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="double_8cpp.html" target="_self">double.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_7_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="floatfunctorsample_8cpp.html" target="_self">floatfunctorsample.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_8_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="floatsample_8cpp.html" target="_self">floatsample.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_9_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="generalizedstruct_8cpp.html" target="_self">generalizedstruct.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_10_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="int64_8cpp.html" target="_self">int64.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_11_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="keyplusdatasample_8cpp.html" target="_self">keyplusdatasample.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_12_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="mostlysorted_8cpp.html" target="_self">mostlysorted.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_13_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="parallelint_8cpp.html" target="_self">parallelint.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_14_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="parallelstring_8cpp.html" target="_self">parallelstring.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_15_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="randomgen_8cpp.html" target="_self">randomgen.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_16_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="reverseintsample_8cpp.html" target="_self">reverseintsample.cpp</a></td><td class="desc">Integer sort with a rightshift functor reverse sorting example </td></tr>
<tr id="row_0_17_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="reversestringfunctorsample_8cpp.html" target="_self">reversestringfunctorsample.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_18_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="reversestringsample_8cpp.html" target="_self">reversestringsample.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_19_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="rightshiftsample_8cpp.html" target="_self">rightshiftsample.cpp</a></td><td class="desc">Integer sort with a rightshift functor sorting example </td></tr>
<tr id="row_0_20_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="sample_8cpp.html" target="_self">sample.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_21_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="shiftfloatsample_8cpp.html" target="_self">shiftfloatsample.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_22_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="stringfunctorsample_8cpp.html" target="_self">stringfunctorsample.cpp</a></td><td class="desc">Spreadsort string functor sorting example </td></tr>
<tr id="row_0_23_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="stringsample_8cpp.html" target="_self">stringsample.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_24_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="wstringsample_8cpp.html" target="_self">wstringsample.cpp</a></td><td class="desc"></td></tr>
<tr id="row_1_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">&#9660;</span><span id="img_1_" class="iconfopen" onclick="toggleFolder('1_')">&#160;</span><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html" target="_self">include</a></td><td class="desc"></td></tr>
<tr id="row_1_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_1_0_" class="arrow" onclick="toggleFolder('1_0_')">&#9660;</span><span id="img_1_0_" class="iconfopen" onclick="toggleFolder('1_0_')">&#160;</span><a class="el" href="dir_1878a3f4746a95c6aad317458cc7ef80.html" target="_self">boost</a></td><td class="desc"></td></tr>
<tr id="row_1_0_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_1_0_0_" class="arrow" onclick="toggleFolder('1_0_0_')">&#9660;</span><span id="img_1_0_0_" class="iconfopen" onclick="toggleFolder('1_0_0_')">&#160;</span><a class="el" href="dir_0dcad0da4f36218cbabb216021de9867.html" target="_self">sort</a></td><td class="desc"></td></tr>
<tr id="row_1_0_0_0_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_1_0_0_0_" class="arrow" onclick="toggleFolder('1_0_0_0_')">&#9660;</span><span id="img_1_0_0_0_" class="iconfopen" onclick="toggleFolder('1_0_0_0_')">&#160;</span><a class="el" href="dir_4aa236a92b75d6f514e733718a475329.html" target="_self">spreadsort</a></td><td class="desc"></td></tr>
<tr id="row_1_0_0_0_0_" class="even"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><a href="float__sort_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="float__sort_8hpp.html" target="_self">float_sort.hpp</a></td><td class="desc"></td></tr>
<tr id="row_1_0_0_0_1_"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><a href="integer__sort_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="integer__sort_8hpp.html" target="_self">integer_sort.hpp</a></td><td class="desc"></td></tr>
<tr id="row_1_0_0_0_2_" class="even"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><a href="spreadsort_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="spreadsort_8hpp.html" target="_self">spreadsort.hpp</a></td><td class="desc"></td></tr>
<tr id="row_1_0_0_0_3_"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><a href="string__sort_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="string__sort_8hpp.html" target="_self">string_sort.hpp</a></td><td class="desc"></td></tr>
<tr id="row_1_0_0_1_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="sort_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="sort_8hpp.html" target="_self">sort.hpp</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,139 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/include/boost/sort/spreadsort/float_sort.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_1878a3f4746a95c6aad317458cc7ef80.html">boost</a></li><li class="navelem"><a class="el" href="dir_0dcad0da4f36218cbabb216021de9867.html">sort</a></li><li class="navelem"><a class="el" href="dir_4aa236a92b75d6f514e733718a475329.html">spreadsort</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">float_sort.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;algorithm&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
<code>#include &lt;cstring&gt;</code><br />
<code>#include &lt;limits&gt;</code><br />
<code>#include &lt;boost/static_assert.hpp&gt;</code><br />
<code>#include &lt;boost/sort/spreadsort/detail/constants.hpp&gt;</code><br />
<code>#include &lt;boost/sort/spreadsort/detail/float_sort.hpp&gt;</code><br />
</div>
<p><a href="float__sort_8hpp_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespaceboost"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespaceboost_1_1sort"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort.html">boost::sort</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ac3a946e197df6cfc4968c6371ace319b"><td class="memTemplParams" colspan="2">template&lt;class Data_type , class Cast_type &gt; </td></tr>
<tr class="memitem:ac3a946e197df6cfc4968c6371ace319b"><td class="memTemplItemLeft" align="right" valign="top">Cast_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort.html#ac3a946e197df6cfc4968c6371ace319b">boost::sort::float_mem_cast</a> (const Data_type &amp;data)</td></tr>
<tr class="memdesc:ac3a946e197df6cfc4968c6371ace319b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Casts a float to the specified integer type. <a href="#ac3a946e197df6cfc4968c6371ace319b">More...</a><br /></td></tr>
<tr class="separator:ac3a946e197df6cfc4968c6371ace319b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acbcfc139de18c5c35c0ff1744c56e211"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter &gt; </td></tr>
<tr class="memitem:acbcfc139de18c5c35c0ff1744c56e211"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort.html#acbcfc139de18c5c35c0ff1744c56e211">boost::sort::float_sort</a> (RandomAccessIter first, RandomAccessIter last)</td></tr>
<tr class="memdesc:acbcfc139de18c5c35c0ff1744c56e211"><td class="mdescLeft">&#160;</td><td class="mdescRight"><code>float_sort</code> with casting to the appropriate size. <a href="#acbcfc139de18c5c35c0ff1744c56e211">More...</a><br /></td></tr>
<tr class="separator:acbcfc139de18c5c35c0ff1744c56e211"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad65f9ec25686acfbd2a59683cc99be12"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Right_shift &gt; </td></tr>
<tr class="memitem:ad65f9ec25686acfbd2a59683cc99be12"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort.html#ad65f9ec25686acfbd2a59683cc99be12">boost::sort::float_sort</a> (RandomAccessIter first, RandomAccessIter last, Right_shift rshift)</td></tr>
<tr class="memdesc:ad65f9ec25686acfbd2a59683cc99be12"><td class="mdescLeft">&#160;</td><td class="mdescRight">Floating-point sort algorithm using random access iterators with just right-shift functor. <a href="#ad65f9ec25686acfbd2a59683cc99be12">More...</a><br /></td></tr>
<tr class="separator:ad65f9ec25686acfbd2a59683cc99be12"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a941746cb1461c5f4971c2cf1efb9301e"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Right_shift , class Compare &gt; </td></tr>
<tr class="memitem:a941746cb1461c5f4971c2cf1efb9301e"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort.html#a941746cb1461c5f4971c2cf1efb9301e">boost::sort::float_sort</a> (RandomAccessIter first, RandomAccessIter last, Right_shift rshift, Compare comp)</td></tr>
<tr class="memdesc:a941746cb1461c5f4971c2cf1efb9301e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Float sort algorithm using random access iterators with both right-shift and user-defined comparison operator. <a href="#a941746cb1461c5f4971c2cf1efb9301e">More...</a><br /></td></tr>
<tr class="separator:a941746cb1461c5f4971c2cf1efb9301e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,244 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/include/boost/sort/spreadsort/float_sort.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_1878a3f4746a95c6aad317458cc7ef80.html">boost</a></li><li class="navelem"><a class="el" href="dir_0dcad0da4f36218cbabb216021de9867.html">sort</a></li><li class="navelem"><a class="el" href="dir_4aa236a92b75d6f514e733718a475329.html">spreadsort</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">float_sort.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="float__sort_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//Templated Spreadsort-based implementation of float_sort and float_mem_cast</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright Steven J. Ross 2001 - 2014.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Distributed under the Boost Software License, Version 1.0.</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// (See accompanying file LICENSE_1_0.txt or copy at</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// See http://www.boost.org/libs/sort/ for library home page.</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">Some improvements suggested by:</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">Phil Endecott and Frank Gennari</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">float_mem_cast fix provided by:</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">Scott McMurray</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#ifndef BOOST_FLOAT_SORT_HPP</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#define BOOST_FLOAT_SORT_HPP</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &lt;cstring&gt;</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;limits&gt;</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &lt;boost/static_assert.hpp&gt;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &lt;boost/sort/spreadsort/detail/constants.hpp&gt;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;boost/sort/spreadsort/detail/float_sort.hpp&gt;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div>
<div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="namespaceboost.html"> 27</a></span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceboost.html">boost</a> {</div>
<div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort.html"> 28</a></span>&#160;<span class="keyword">namespace </span>sort {</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> /*!</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> \brief Casts a float to the specified integer type.</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> \tparam Data_type Floating-point IEEE 754/IEC559 type.</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> \tparam Cast_type Integer type (same size) to which to cast.</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> \par Example:</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> \code</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"> struct rightshift {</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> int operator()(const DATA_TYPE &amp;x, const unsigned offset) const {</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> return float_mem_cast&lt;KEY_TYPE, CAST_TYPE&gt;(x.key) &gt;&gt; offset;</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> }</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> };</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> \endcode</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> Data_type, <span class="keyword">class</span> Cast_type&gt;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">inline</span> Cast_type</div>
<div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort.html#ac3a946e197df6cfc4968c6371ace319b"> 48</a></span>&#160; <a class="code" href="namespaceboost_1_1sort.html#ac3a946e197df6cfc4968c6371ace319b">float_mem_cast</a>(<span class="keyword">const</span> Data_type &amp; data)</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; {</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="comment">// Only cast IEEE floating-point numbers, and only to a same-sized integer.</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; BOOST_STATIC_ASSERT(<span class="keyword">sizeof</span>(Cast_type) == <span class="keyword">sizeof</span>(Data_type));</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; BOOST_STATIC_ASSERT(std::numeric_limits&lt;Data_type&gt;::is_iec559);</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; BOOST_STATIC_ASSERT(std::numeric_limits&lt;Cast_type&gt;::is_integer);</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; Cast_type result;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; std::memcpy(&amp;result, &amp;data, <span class="keyword">sizeof</span>(Cast_type));</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment"> /*!</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"> \brief @c float_sort with casting to the appropriate size.</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment"> \tparam RandomAccessIter &lt;a href=&quot;http://www.cplusplus.com/reference/iterator/RandomAccessIterator/&quot;&gt;Random access iterator&lt;/a&gt;</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="comment"> \param[in] first Iterator pointer to first element.</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"> \param[in] last Iterator pointing to one beyond the end of data.</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment">Some performance plots of runtime vs. n and log(range) are provided:\n</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> &lt;a href=&quot;../../doc/graph/windows_float_sort.htm&quot;&gt; windows_float_sort&lt;/a&gt;</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> \n</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> &lt;a href=&quot;../../doc/graph/osx_float_sort.htm&quot;&gt; osx_float_sort&lt;/a&gt;</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"> \par A simple example of sorting some floating-point is:</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"> \code</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"> vector&lt;float&gt; vec;</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"> vec.push_back(1.0);</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"> vec.push_back(2.3);</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment"> vec.push_back(1.3);</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"> spreadsort(vec.begin(), vec.end());</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"> \endcode</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment"> \par The sorted vector contains ascending values &quot;1.0 1.3 2.3&quot;.</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter&gt;</div>
<div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort.html#acbcfc139de18c5c35c0ff1744c56e211"> 86</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1sort.html#acbcfc139de18c5c35c0ff1744c56e211">float_sort</a>(RandomAccessIter first, RandomAccessIter last)</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">if</span> (last - first &lt; detail::min_sort_size)</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; std::sort(first, last);</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="namespaceboost_1_1sort.html#a941746cb1461c5f4971c2cf1efb9301e">detail::float_sort</a>(first, last);</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; }</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"> /*!</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"> \brief Floating-point sort algorithm using random access iterators with just right-shift functor.</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"> \tparam RandomAccessIter &lt;a href=&quot;http://www.cplusplus.com/reference/iterator/RandomAccessIterator/&quot;&gt;Random access iterator&lt;/a&gt;</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> \tparam Right_shift Functor for right-shift by parameter @c shift bits.</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> \param[in] first Iterator pointer to first element.</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment"> \param[in] last Iterator pointing to one beyond the end of data.</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment"> \param[in] rshift Number of bits to right-shift (using functor).</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Right_shift&gt;</div>
<div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort.html#ad65f9ec25686acfbd2a59683cc99be12"> 105</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1sort.html#acbcfc139de18c5c35c0ff1744c56e211">float_sort</a>(RandomAccessIter first, RandomAccessIter last,</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; Right_shift rshift)</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; {</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">if</span> (last - first &lt; detail::min_sort_size)</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; std::sort(first, last);</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="namespaceboost_1_1sort.html#a941746cb1461c5f4971c2cf1efb9301e">detail::float_sort</a>(first, last, rshift(*first, 0), rshift);</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment"> /*!</span></div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="comment"> \brief Float sort algorithm using random access iterators with both right-shift and user-defined comparison operator.</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment"> \tparam RandomAccessIter &lt;a href=&quot;http://www.cplusplus.com/reference/iterator/RandomAccessIterator/&quot;&gt;Random access iterator&lt;/a&gt;</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="comment"> \tparam Right_shift functor for right-shift by parameter @c shift bits.</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="comment"> \tparam Comp To provide @c operator&lt; for user-defined comparison.</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="comment"> \param[in] first Iterator pointer to first element.</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment"> \param[in] last Iterator pointing to one beyond the end of data.</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="comment"> \param[in] rshift Number of bits to right-shift (using functor).</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment"> \param[in] comp comparison functor.</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Right_shift, <span class="keyword">class</span> Compare&gt;</div>
<div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort.html#a941746cb1461c5f4971c2cf1efb9301e"> 129</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1sort.html#acbcfc139de18c5c35c0ff1744c56e211">float_sort</a>(RandomAccessIter first, RandomAccessIter last,</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; Right_shift rshift, Compare comp)</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; {</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">if</span> (last - first &lt; detail::min_sort_size)</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; std::sort(first, last, comp);</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="namespaceboost_1_1sort.html#a941746cb1461c5f4971c2cf1efb9301e">detail::float_sort</a>(first, last, rshift(*first, 0), rshift, comp);</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;}</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;}</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="namespaceboost_html"><div class="ttname"><a href="namespaceboost.html">boost</a></div><div class="ttdef"><b>Definition:</b> float_sort.hpp:27</div></div>
<div class="ttc" id="namespaceboost_1_1sort_html_a941746cb1461c5f4971c2cf1efb9301e"><div class="ttname"><a href="namespaceboost_1_1sort.html#a941746cb1461c5f4971c2cf1efb9301e">boost::sort::float_sort</a></div><div class="ttdeci">void float_sort(RandomAccessIter first, RandomAccessIter last, Right_shift rshift, Compare comp)</div><div class="ttdoc">Float sort algorithm using random access iterators with both right-shift and user-defined comparison ...</div><div class="ttdef"><b>Definition:</b> float_sort.hpp:129</div></div>
<div class="ttc" id="namespaceboost_1_1sort_html_ac3a946e197df6cfc4968c6371ace319b"><div class="ttname"><a href="namespaceboost_1_1sort.html#ac3a946e197df6cfc4968c6371ace319b">boost::sort::float_mem_cast</a></div><div class="ttdeci">Cast_type float_mem_cast(const Data_type &amp;data)</div><div class="ttdoc">Casts a float to the specified integer type. </div><div class="ttdef"><b>Definition:</b> float_sort.hpp:48</div></div>
<div class="ttc" id="namespaceboost_1_1sort_html_acbcfc139de18c5c35c0ff1744c56e211"><div class="ttname"><a href="namespaceboost_1_1sort.html#acbcfc139de18c5c35c0ff1744c56e211">boost::sort::float_sort</a></div><div class="ttdeci">void float_sort(RandomAccessIter first, RandomAccessIter last)</div><div class="ttdoc">float_sort with casting to the appropriate size. </div><div class="ttdef"><b>Definition:</b> float_sort.hpp:86</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,188 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/example/floatfunctorsample.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html">example</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">floatfunctorsample.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="spreadsort_8hpp_source.html">boost/sort/spreadsort/spreadsort.hpp</a>&gt;</code><br />
<code>#include &lt;time.h&gt;</code><br />
<code>#include &lt;stdio.h&gt;</code><br />
<code>#include &lt;stdlib.h&gt;</code><br />
<code>#include &lt;algorithm&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
<code>#include &lt;fstream&gt;</code><br />
<code>#include &lt;sstream&gt;</code><br />
<code>#include &lt;iostream&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrightshift.html">rightshift</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlessthan.html">lessthan</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a38779bfd63dd113c9f7602664546a58c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="floatfunctorsample_8cpp.html#a38779bfd63dd113c9f7602664546a58c">CAST_TYPE</a>&#160;&#160;&#160;int</td></tr>
<tr class="separator:a38779bfd63dd113c9f7602664546a58c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae35c40bc2f912c11f0e36ac66cba4489"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="floatfunctorsample_8cpp.html#ae35c40bc2f912c11f0e36ac66cba4489">KEY_TYPE</a>&#160;&#160;&#160;float</td></tr>
<tr class="separator:ae35c40bc2f912c11f0e36ac66cba4489"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a217dbf8b442f20279ea00b898af96f52"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="floatfunctorsample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">main</a> (int argc, const char **argv)</td></tr>
<tr class="separator:a217dbf8b442f20279ea00b898af96f52"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="a38779bfd63dd113c9f7602664546a58c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CAST_TYPE&#160;&#160;&#160;int</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ae35c40bc2f912c11f0e36ac66cba4489"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define KEY_TYPE&#160;&#160;&#160;float</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a217dbf8b442f20279ea00b898af96f52"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char **&#160;</td>
<td class="paramname"><em>argv</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,177 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/example/floatsample.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html">example</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">floatsample.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="spreadsort_8hpp_source.html">boost/sort/spreadsort/spreadsort.hpp</a>&gt;</code><br />
<code>#include &lt;time.h&gt;</code><br />
<code>#include &lt;stdio.h&gt;</code><br />
<code>#include &lt;stdlib.h&gt;</code><br />
<code>#include &lt;algorithm&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
<code>#include &lt;fstream&gt;</code><br />
<code>#include &lt;iostream&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:afb8c72ce35c4a1f4a2588d6573e54aa1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="floatsample_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a>&#160;&#160;&#160;float</td></tr>
<tr class="separator:afb8c72ce35c4a1f4a2588d6573e54aa1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a38779bfd63dd113c9f7602664546a58c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="floatsample_8cpp.html#a38779bfd63dd113c9f7602664546a58c">CAST_TYPE</a>&#160;&#160;&#160;int</td></tr>
<tr class="separator:a38779bfd63dd113c9f7602664546a58c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a217dbf8b442f20279ea00b898af96f52"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="floatsample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">main</a> (int argc, const char **argv)</td></tr>
<tr class="separator:a217dbf8b442f20279ea00b898af96f52"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="a38779bfd63dd113c9f7602664546a58c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define CAST_TYPE&#160;&#160;&#160;int</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="afb8c72ce35c4a1f4a2588d6573e54aa1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define <a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a>&#160;&#160;&#160;float</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a217dbf8b442f20279ea00b898af96f52"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char **&#160;</td>
<td class="paramname"><em>argv</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 616 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 616 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

View File

@@ -0,0 +1,134 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: Class Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="classes.html"><span>Class&#160;Index</span></a></li>
<li class="current"><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li class="current"><a href="functions.html"><span>All</span></a></li>
<li><a href="functions_func.html"><span>Functions</span></a></li>
<li><a href="functions_vars.html"><span>Variables</span></a></li>
</ul>
</div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div><ul>
<li>a
: <a class="el" href="struct_d_a_t_a___t_y_p_e.html#a0f17d79c6492cb604f3da783a5017b54">DATA_TYPE</a>
</li>
<li>birth
: <a class="el" href="struct_d_a_t_a___t_y_p_e.html#a437ac9cab171cc3fff62212c65b3810c">DATA_TYPE</a>
</li>
<li>data
: <a class="el" href="struct_d_a_t_a___t_y_p_e.html#ae644cc131b810b459261b3426e2c459c">DATA_TYPE</a>
</li>
<li>first_name
: <a class="el" href="struct_d_a_t_a___t_y_p_e.html#ad2c00885d0c6afec26d51a53ae05e403">DATA_TYPE</a>
</li>
<li>key
: <a class="el" href="struct_d_a_t_a___t_y_p_e.html#aa28561fc8e223d84187ccfaf99953bae">DATA_TYPE</a>
</li>
<li>last_name
: <a class="el" href="struct_d_a_t_a___t_y_p_e.html#a12df0589010b4a79d824dbea9326ba43">DATA_TYPE</a>
</li>
<li>net_worth
: <a class="el" href="struct_d_a_t_a___t_y_p_e.html#a2a7008d5cecd603c1aaf8ff9ed849621">DATA_TYPE</a>
</li>
<li>operator()()
: <a class="el" href="structbracket.html#aa87f46d8c06444604c98138eb9a7627a">bracket</a>
, <a class="el" href="structgetsize.html#a0571ba8961ed6f7f2d7003509a9ca9b7">getsize</a>
, <a class="el" href="structgreaterthan.html#a37147ad0d885c20dc3380b366e75f7cd">greaterthan</a>
, <a class="el" href="structlessthan.html#ac8c76b8c1e456abd4cdd4b6ac3546582">lessthan</a>
, <a class="el" href="structnegrightshift.html#ae39663d02ec765fd114b68ac0be844e2">negrightshift</a>
, <a class="el" href="structrightshift.html#a87a59db62b9d8c90a02df98442199598">rightshift</a>
</li>
<li>operator&lt;()
: <a class="el" href="struct_d_a_t_a___t_y_p_e.html#a6a24b4532734d210a7b3a9c71a3678f5">DATA_TYPE</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,113 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: Class Members - Functions</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="classes.html"><span>Class&#160;Index</span></a></li>
<li class="current"><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li><a href="functions.html"><span>All</span></a></li>
<li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
<li><a href="functions_vars.html"><span>Variables</span></a></li>
</ul>
</div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
&#160;<ul>
<li>operator()()
: <a class="el" href="structbracket.html#aa87f46d8c06444604c98138eb9a7627a">bracket</a>
, <a class="el" href="structgetsize.html#a0571ba8961ed6f7f2d7003509a9ca9b7">getsize</a>
, <a class="el" href="structgreaterthan.html#a37147ad0d885c20dc3380b366e75f7cd">greaterthan</a>
, <a class="el" href="structlessthan.html#ac8c76b8c1e456abd4cdd4b6ac3546582">lessthan</a>
, <a class="el" href="structnegrightshift.html#ae39663d02ec765fd114b68ac0be844e2">negrightshift</a>
, <a class="el" href="structrightshift.html#a3464d6de770ac9db414271587a712d12">rightshift</a>
</li>
<li>operator&lt;()
: <a class="el" href="struct_d_a_t_a___t_y_p_e.html#a6a24b4532734d210a7b3a9c71a3678f5">DATA_TYPE</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,123 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: Class Members - Variables</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="classes.html"><span>Class&#160;Index</span></a></li>
<li class="current"><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li><a href="functions.html"><span>All</span></a></li>
<li><a href="functions_func.html"><span>Functions</span></a></li>
<li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
</ul>
</div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
&#160;<ul>
<li>a
: <a class="el" href="struct_d_a_t_a___t_y_p_e.html#a0f17d79c6492cb604f3da783a5017b54">DATA_TYPE</a>
</li>
<li>birth
: <a class="el" href="struct_d_a_t_a___t_y_p_e.html#a437ac9cab171cc3fff62212c65b3810c">DATA_TYPE</a>
</li>
<li>data
: <a class="el" href="struct_d_a_t_a___t_y_p_e.html#ae644cc131b810b459261b3426e2c459c">DATA_TYPE</a>
</li>
<li>first_name
: <a class="el" href="struct_d_a_t_a___t_y_p_e.html#ad2c00885d0c6afec26d51a53ae05e403">DATA_TYPE</a>
</li>
<li>key
: <a class="el" href="struct_d_a_t_a___t_y_p_e.html#aa28561fc8e223d84187ccfaf99953bae">DATA_TYPE</a>
</li>
<li>last_name
: <a class="el" href="struct_d_a_t_a___t_y_p_e.html#a12df0589010b4a79d824dbea9326ba43">DATA_TYPE</a>
</li>
<li>net_worth
: <a class="el" href="struct_d_a_t_a___t_y_p_e.html#a2a7008d5cecd603c1aaf8ff9ed849621">DATA_TYPE</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,157 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/example/generalizedstruct.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html">example</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">generalizedstruct.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="string__sort_8hpp_source.html">boost/sort/spreadsort/string_sort.hpp</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="float__sort_8hpp_source.html">boost/sort/spreadsort/float_sort.hpp</a>&gt;</code><br />
<code>#include &lt;time.h&gt;</code><br />
<code>#include &lt;stdio.h&gt;</code><br />
<code>#include &lt;stdlib.h&gt;</code><br />
<code>#include &lt;algorithm&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
<code>#include &lt;iostream&gt;</code><br />
<code>#include &lt;fstream&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlessthan.html">lessthan</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structbracket.html">bracket</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structgetsize.html">getsize</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a217dbf8b442f20279ea00b898af96f52"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generalizedstruct_8cpp.html#a217dbf8b442f20279ea00b898af96f52">main</a> (int argc, const char **argv)</td></tr>
<tr class="separator:a217dbf8b442f20279ea00b898af96f52"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a217dbf8b442f20279ea00b898af96f52"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char **&#160;</td>
<td class="paramname"><em>argv</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,255 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: File Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li class="current"><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li class="current"><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_vars.html"><span>Variables</span></a></li>
<li><a href="globals_defs.html"><span>Macros</span></a></li>
</ul>
</div>
<div id="navrow4" class="tabs3">
<ul class="tablist">
<li><a href="#index_a"><span>a</span></a></li>
<li><a href="#index_b"><span>b</span></a></li>
<li><a href="#index_c"><span>c</span></a></li>
<li><a href="#index_d"><span>d</span></a></li>
<li><a href="#index_f"><span>f</span></a></li>
<li><a href="#index_g"><span>g</span></a></li>
<li><a href="#index_i"><span>i</span></a></li>
<li><a href="#index_k"><span>k</span></a></li>
<li><a href="#index_m"><span>m</span></a></li>
<li><a href="#index_r"><span>r</span></a></li>
<li><a href="#index_s"><span>s</span></a></li>
<li class="current"><a href="#index_t"><span>t</span></a></li>
</ul>
</div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
<div class="textblock">Here is a list of all file members with links to the files they belong to:</div>
<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
<li>ALR_THRESHOLD
: <a class="el" href="alrbreaker_8cpp.html#a3bc09656dab629cfa24aa2ab3f44a3e6">alrbreaker.cpp</a>
, <a class="el" href="binaryalrbreaker_8cpp.html#a3bc09656dab629cfa24aa2ab3f44a3e6">binaryalrbreaker.cpp</a>
</li>
</ul>
<h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
<li>bit_shift
: <a class="el" href="alrbreaker_8cpp.html#a50fb2847ba87c9bd84e0c5c8a951f9de">alrbreaker.cpp</a>
, <a class="el" href="binaryalrbreaker_8cpp.html#a50fb2847ba87c9bd84e0c5c8a951f9de">binaryalrbreaker.cpp</a>
</li>
</ul>
<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
<li>CAST_TYPE
: <a class="el" href="double_8cpp.html#a38779bfd63dd113c9f7602664546a58c">double.cpp</a>
, <a class="el" href="floatfunctorsample_8cpp.html#a38779bfd63dd113c9f7602664546a58c">floatfunctorsample.cpp</a>
, <a class="el" href="floatsample_8cpp.html#a38779bfd63dd113c9f7602664546a58c">floatsample.cpp</a>
, <a class="el" href="shiftfloatsample_8cpp.html#a38779bfd63dd113c9f7602664546a58c">shiftfloatsample.cpp</a>
</li>
</ul>
<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
<li>DATA_TYPE
: <a class="el" href="alrbreaker_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">alrbreaker.cpp</a>
, <a class="el" href="alreadysorted_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">alreadysorted.cpp</a>
, <a class="el" href="binaryalrbreaker_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">binaryalrbreaker.cpp</a>
, <a class="el" href="double_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">double.cpp</a>
, <a class="el" href="floatsample_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">floatsample.cpp</a>
, <a class="el" href="int64_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">int64.cpp</a>
, <a class="el" href="mostlysorted_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">mostlysorted.cpp</a>
, <a class="el" href="parallelint_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">parallelint.cpp</a>
, <a class="el" href="parallelstring_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">parallelstring.cpp</a>
, <a class="el" href="reverseintsample_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">reverseintsample.cpp</a>
, <a class="el" href="reversestringsample_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">reversestringsample.cpp</a>
, <a class="el" href="rightshiftsample_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">rightshiftsample.cpp</a>
, <a class="el" href="sample_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">sample.cpp</a>
, <a class="el" href="shiftfloatsample_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">shiftfloatsample.cpp</a>
, <a class="el" href="stringsample_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">stringsample.cpp</a>
, <a class="el" href="wstringsample_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">wstringsample.cpp</a>
</li>
</ul>
<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
<li>fill_vector()
: <a class="el" href="alrbreaker_8cpp.html#a53572e34857429ae9b6d9c5f4d02b453">alrbreaker.cpp</a>
, <a class="el" href="binaryalrbreaker_8cpp.html#ac9ac611850049644567c33a1b01e108a">binaryalrbreaker.cpp</a>
</li>
</ul>
<h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
<li>get_index()
: <a class="el" href="binaryalrbreaker_8cpp.html#a0154ebfc03900bb5789ff9a306a480a9">binaryalrbreaker.cpp</a>
, <a class="el" href="mostlysorted_8cpp.html#a0154ebfc03900bb5789ff9a306a480a9">mostlysorted.cpp</a>
</li>
</ul>
<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
<li>is_sorted()
: <a class="el" href="parallelint_8cpp.html#af6d351e5a33a6614628ba40ab9776aa6">parallelint.cpp</a>
</li>
</ul>
<h3><a class="anchor" id="index_k"></a>- k -</h3><ul>
<li>KEY_TYPE
: <a class="el" href="floatfunctorsample_8cpp.html#ae35c40bc2f912c11f0e36ac66cba4489">floatfunctorsample.cpp</a>
</li>
</ul>
<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
<li>main()
: <a class="el" href="alrbreaker_8cpp.html#a0fc34f49b0e6eaed5e5c3accb409b1d1">alrbreaker.cpp</a>
, <a class="el" href="alreadysorted_8cpp.html#a217dbf8b442f20279ea00b898af96f52">alreadysorted.cpp</a>
, <a class="el" href="binaryalrbreaker_8cpp.html#a0fc34f49b0e6eaed5e5c3accb409b1d1">binaryalrbreaker.cpp</a>
, <a class="el" href="boostrandomgen_8cpp.html#a217dbf8b442f20279ea00b898af96f52">boostrandomgen.cpp</a>
, <a class="el" href="caseinsensitive_8cpp.html#a217dbf8b442f20279ea00b898af96f52">caseinsensitive.cpp</a>
, <a class="el" href="charstringsample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">charstringsample.cpp</a>
, <a class="el" href="double_8cpp.html#a217dbf8b442f20279ea00b898af96f52">double.cpp</a>
, <a class="el" href="floatfunctorsample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">floatfunctorsample.cpp</a>
, <a class="el" href="floatsample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">floatsample.cpp</a>
, <a class="el" href="generalizedstruct_8cpp.html#a217dbf8b442f20279ea00b898af96f52">generalizedstruct.cpp</a>
, <a class="el" href="int64_8cpp.html#a217dbf8b442f20279ea00b898af96f52">int64.cpp</a>
, <a class="el" href="keyplusdatasample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">keyplusdatasample.cpp</a>
, <a class="el" href="mostlysorted_8cpp.html#a217dbf8b442f20279ea00b898af96f52">mostlysorted.cpp</a>
, <a class="el" href="parallelint_8cpp.html#a217dbf8b442f20279ea00b898af96f52">parallelint.cpp</a>
, <a class="el" href="parallelstring_8cpp.html#a217dbf8b442f20279ea00b898af96f52">parallelstring.cpp</a>
, <a class="el" href="randomgen_8cpp.html#a217dbf8b442f20279ea00b898af96f52">randomgen.cpp</a>
, <a class="el" href="reverseintsample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">reverseintsample.cpp</a>
, <a class="el" href="reversestringfunctorsample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">reversestringfunctorsample.cpp</a>
, <a class="el" href="reversestringsample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">reversestringsample.cpp</a>
, <a class="el" href="rightshiftsample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">rightshiftsample.cpp</a>
, <a class="el" href="sample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">sample.cpp</a>
, <a class="el" href="shiftfloatsample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">shiftfloatsample.cpp</a>
, <a class="el" href="stringfunctorsample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">stringfunctorsample.cpp</a>
, <a class="el" href="stringsample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">stringsample.cpp</a>
, <a class="el" href="wstringsample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">wstringsample.cpp</a>
</li>
<li>max_count
: <a class="el" href="alrbreaker_8cpp.html#a4587b2f61869f9798cb12a8ebb37387d">alrbreaker.cpp</a>
, <a class="el" href="binaryalrbreaker_8cpp.html#a4587b2f61869f9798cb12a8ebb37387d">binaryalrbreaker.cpp</a>
</li>
</ul>
<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
<li>radix_threshold
: <a class="el" href="alrbreaker_8cpp.html#afc30457e398e72300f20714123913b78">alrbreaker.cpp</a>
, <a class="el" href="binaryalrbreaker_8cpp.html#afc30457e398e72300f20714123913b78">binaryalrbreaker.cpp</a>
</li>
</ul>
<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
<li>sort_loop()
: <a class="el" href="parallelint_8cpp.html#acbd0dadb301334e73befdafddd98b044">parallelint.cpp</a>
</li>
</ul>
<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
<li>top_splits
: <a class="el" href="alrbreaker_8cpp.html#a60c4ea1dd4d297e0d2e395375e0e716c">alrbreaker.cpp</a>
</li>
<li>typed_one
: <a class="el" href="alrbreaker_8cpp.html#a8b984673f3b3e097d3f37508923452fa">alrbreaker.cpp</a>
, <a class="el" href="binaryalrbreaker_8cpp.html#a8b984673f3b3e097d3f37508923452fa">binaryalrbreaker.cpp</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,133 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: File Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li class="current"><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_vars.html"><span>Variables</span></a></li>
<li class="current"><a href="globals_defs.html"><span>Macros</span></a></li>
</ul>
</div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
&#160;<ul>
<li>ALR_THRESHOLD
: <a class="el" href="alrbreaker_8cpp.html#a3bc09656dab629cfa24aa2ab3f44a3e6">alrbreaker.cpp</a>
, <a class="el" href="binaryalrbreaker_8cpp.html#a3bc09656dab629cfa24aa2ab3f44a3e6">binaryalrbreaker.cpp</a>
</li>
<li>CAST_TYPE
: <a class="el" href="double_8cpp.html#a38779bfd63dd113c9f7602664546a58c">double.cpp</a>
, <a class="el" href="floatfunctorsample_8cpp.html#a38779bfd63dd113c9f7602664546a58c">floatfunctorsample.cpp</a>
, <a class="el" href="floatsample_8cpp.html#a38779bfd63dd113c9f7602664546a58c">floatsample.cpp</a>
, <a class="el" href="shiftfloatsample_8cpp.html#a38779bfd63dd113c9f7602664546a58c">shiftfloatsample.cpp</a>
</li>
<li>DATA_TYPE
: <a class="el" href="alrbreaker_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">alrbreaker.cpp</a>
, <a class="el" href="alreadysorted_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">alreadysorted.cpp</a>
, <a class="el" href="binaryalrbreaker_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">binaryalrbreaker.cpp</a>
, <a class="el" href="double_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">double.cpp</a>
, <a class="el" href="floatsample_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">floatsample.cpp</a>
, <a class="el" href="int64_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">int64.cpp</a>
, <a class="el" href="mostlysorted_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">mostlysorted.cpp</a>
, <a class="el" href="parallelint_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">parallelint.cpp</a>
, <a class="el" href="parallelstring_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">parallelstring.cpp</a>
, <a class="el" href="reverseintsample_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">reverseintsample.cpp</a>
, <a class="el" href="reversestringsample_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">reversestringsample.cpp</a>
, <a class="el" href="rightshiftsample_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">rightshiftsample.cpp</a>
, <a class="el" href="sample_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">sample.cpp</a>
, <a class="el" href="shiftfloatsample_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">shiftfloatsample.cpp</a>
, <a class="el" href="stringsample_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">stringsample.cpp</a>
, <a class="el" href="wstringsample_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">wstringsample.cpp</a>
</li>
<li>KEY_TYPE
: <a class="el" href="floatfunctorsample_8cpp.html#ae35c40bc2f912c11f0e36ac66cba4489">floatfunctorsample.cpp</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,170 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: File Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li class="current"><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li><a href="globals.html"><span>All</span></a></li>
<li class="current"><a href="globals_func.html"><span>Functions</span></a></li>
<li><a href="globals_vars.html"><span>Variables</span></a></li>
<li><a href="globals_defs.html"><span>Macros</span></a></li>
</ul>
</div>
<div id="navrow4" class="tabs3">
<ul class="tablist">
<li><a href="#index_f"><span>f</span></a></li>
<li><a href="#index_g"><span>g</span></a></li>
<li><a href="#index_i"><span>i</span></a></li>
<li><a href="#index_m"><span>m</span></a></li>
<li class="current"><a href="#index_s"><span>s</span></a></li>
</ul>
</div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
&#160;
<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
<li>fill_vector()
: <a class="el" href="alrbreaker_8cpp.html#a53572e34857429ae9b6d9c5f4d02b453">alrbreaker.cpp</a>
, <a class="el" href="binaryalrbreaker_8cpp.html#ac9ac611850049644567c33a1b01e108a">binaryalrbreaker.cpp</a>
</li>
</ul>
<h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
<li>get_index()
: <a class="el" href="binaryalrbreaker_8cpp.html#a0154ebfc03900bb5789ff9a306a480a9">binaryalrbreaker.cpp</a>
, <a class="el" href="mostlysorted_8cpp.html#a0154ebfc03900bb5789ff9a306a480a9">mostlysorted.cpp</a>
</li>
</ul>
<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
<li>is_sorted()
: <a class="el" href="parallelint_8cpp.html#af6d351e5a33a6614628ba40ab9776aa6">parallelint.cpp</a>
</li>
</ul>
<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
<li>main()
: <a class="el" href="alrbreaker_8cpp.html#a0fc34f49b0e6eaed5e5c3accb409b1d1">alrbreaker.cpp</a>
, <a class="el" href="wstringsample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">wstringsample.cpp</a>
, <a class="el" href="stringsample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">stringsample.cpp</a>
, <a class="el" href="stringfunctorsample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">stringfunctorsample.cpp</a>
, <a class="el" href="shiftfloatsample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">shiftfloatsample.cpp</a>
, <a class="el" href="sample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">sample.cpp</a>
, <a class="el" href="rightshiftsample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">rightshiftsample.cpp</a>
, <a class="el" href="reversestringsample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">reversestringsample.cpp</a>
, <a class="el" href="reversestringfunctorsample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">reversestringfunctorsample.cpp</a>
, <a class="el" href="reverseintsample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">reverseintsample.cpp</a>
, <a class="el" href="randomgen_8cpp.html#a217dbf8b442f20279ea00b898af96f52">randomgen.cpp</a>
, <a class="el" href="parallelstring_8cpp.html#a217dbf8b442f20279ea00b898af96f52">parallelstring.cpp</a>
, <a class="el" href="parallelint_8cpp.html#a217dbf8b442f20279ea00b898af96f52">parallelint.cpp</a>
, <a class="el" href="mostlysorted_8cpp.html#a217dbf8b442f20279ea00b898af96f52">mostlysorted.cpp</a>
, <a class="el" href="keyplusdatasample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">keyplusdatasample.cpp</a>
, <a class="el" href="int64_8cpp.html#a217dbf8b442f20279ea00b898af96f52">int64.cpp</a>
, <a class="el" href="generalizedstruct_8cpp.html#a217dbf8b442f20279ea00b898af96f52">generalizedstruct.cpp</a>
, <a class="el" href="floatsample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">floatsample.cpp</a>
, <a class="el" href="floatfunctorsample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">floatfunctorsample.cpp</a>
, <a class="el" href="double_8cpp.html#a217dbf8b442f20279ea00b898af96f52">double.cpp</a>
, <a class="el" href="charstringsample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">charstringsample.cpp</a>
, <a class="el" href="caseinsensitive_8cpp.html#a217dbf8b442f20279ea00b898af96f52">caseinsensitive.cpp</a>
, <a class="el" href="boostrandomgen_8cpp.html#a217dbf8b442f20279ea00b898af96f52">boostrandomgen.cpp</a>
, <a class="el" href="binaryalrbreaker_8cpp.html#a0fc34f49b0e6eaed5e5c3accb409b1d1">binaryalrbreaker.cpp</a>
, <a class="el" href="alreadysorted_8cpp.html#a217dbf8b442f20279ea00b898af96f52">alreadysorted.cpp</a>
</li>
</ul>
<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
<li>sort_loop()
: <a class="el" href="parallelint_8cpp.html#acbd0dadb301334e73befdafddd98b044">parallelint.cpp</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,121 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: File Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li class="current"><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li><a href="globals.html"><span>All</span></a></li>
<li><a href="globals_func.html"><span>Functions</span></a></li>
<li class="current"><a href="globals_vars.html"><span>Variables</span></a></li>
<li><a href="globals_defs.html"><span>Macros</span></a></li>
</ul>
</div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
&#160;<ul>
<li>bit_shift
: <a class="el" href="alrbreaker_8cpp.html#a50fb2847ba87c9bd84e0c5c8a951f9de">alrbreaker.cpp</a>
, <a class="el" href="binaryalrbreaker_8cpp.html#a50fb2847ba87c9bd84e0c5c8a951f9de">binaryalrbreaker.cpp</a>
</li>
<li>max_count
: <a class="el" href="alrbreaker_8cpp.html#a4587b2f61869f9798cb12a8ebb37387d">alrbreaker.cpp</a>
, <a class="el" href="binaryalrbreaker_8cpp.html#a4587b2f61869f9798cb12a8ebb37387d">binaryalrbreaker.cpp</a>
</li>
<li>radix_threshold
: <a class="el" href="alrbreaker_8cpp.html#afc30457e398e72300f20714123913b78">alrbreaker.cpp</a>
, <a class="el" href="binaryalrbreaker_8cpp.html#afc30457e398e72300f20714123913b78">binaryalrbreaker.cpp</a>
</li>
<li>top_splits
: <a class="el" href="alrbreaker_8cpp.html#a60c4ea1dd4d297e0d2e395375e0e716c">alrbreaker.cpp</a>
</li>
<li>typed_one
: <a class="el" href="alrbreaker_8cpp.html#a8b984673f3b3e097d3f37508923452fa">alrbreaker.cpp</a>
, <a class="el" href="binaryalrbreaker_8cpp.html#a8b984673f3b3e097d3f37508923452fa">binaryalrbreaker.cpp</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,90 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: Main Page</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li class="current"><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Boost.Sort Documentation</div> </div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,164 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/example/int64.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html">example</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">int64.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="spreadsort_8hpp_source.html">boost/sort/spreadsort/spreadsort.hpp</a>&gt;</code><br />
<code>#include &lt;time.h&gt;</code><br />
<code>#include &lt;stdio.h&gt;</code><br />
<code>#include &lt;stdlib.h&gt;</code><br />
<code>#include &lt;algorithm&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
<code>#include &lt;fstream&gt;</code><br />
<code>#include &lt;sstream&gt;</code><br />
<code>#include &lt;iostream&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:afb8c72ce35c4a1f4a2588d6573e54aa1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="int64_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a>&#160;&#160;&#160;boost::int64_t</td></tr>
<tr class="separator:afb8c72ce35c4a1f4a2588d6573e54aa1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a217dbf8b442f20279ea00b898af96f52"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="int64_8cpp.html#a217dbf8b442f20279ea00b898af96f52">main</a> (int argc, const char **argv)</td></tr>
<tr class="separator:a217dbf8b442f20279ea00b898af96f52"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="afb8c72ce35c4a1f4a2588d6573e54aa1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define <a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a>&#160;&#160;&#160;boost::int64_t</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a217dbf8b442f20279ea00b898af96f52"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char **&#160;</td>
<td class="paramname"><em>argv</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,135 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/include/boost/sort/spreadsort/integer_sort.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_1878a3f4746a95c6aad317458cc7ef80.html">boost</a></li><li class="navelem"><a class="el" href="dir_0dcad0da4f36218cbabb216021de9867.html">sort</a></li><li class="navelem"><a class="el" href="dir_4aa236a92b75d6f514e733718a475329.html">spreadsort</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">integer_sort.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;algorithm&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
<code>#include &lt;cstring&gt;</code><br />
<code>#include &lt;limits&gt;</code><br />
<code>#include &lt;boost/static_assert.hpp&gt;</code><br />
<code>#include &lt;boost/sort/spreadsort/detail/constants.hpp&gt;</code><br />
<code>#include &lt;boost/sort/spreadsort/detail/integer_sort.hpp&gt;</code><br />
</div>
<p><a href="integer__sort_8hpp_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespaceboost"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost.html">boost</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespaceboost_1_1sort"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort.html">boost::sort</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ae6ffbcf932699589fd2b93879f209013"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter &gt; </td></tr>
<tr class="memitem:ae6ffbcf932699589fd2b93879f209013"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort.html#ae6ffbcf932699589fd2b93879f209013">boost::sort::integer_sort</a> (RandomAccessIter first, RandomAccessIter last)</td></tr>
<tr class="memdesc:ae6ffbcf932699589fd2b93879f209013"><td class="mdescLeft">&#160;</td><td class="mdescRight">Integer sort algorithm using random access iterators. (All variants fall back to <code>std::sort</code> if the data size is too small, &lt; <code>detail::min_sort_size</code>). <a href="#ae6ffbcf932699589fd2b93879f209013">More...</a><br /></td></tr>
<tr class="separator:ae6ffbcf932699589fd2b93879f209013"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa4ebb2541be58f9f0fecd8d7c108b817"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Right_shift , class Compare &gt; </td></tr>
<tr class="memitem:aa4ebb2541be58f9f0fecd8d7c108b817"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort.html#aa4ebb2541be58f9f0fecd8d7c108b817">boost::sort::integer_sort</a> (RandomAccessIter first, RandomAccessIter last, Right_shift shift, Compare comp)</td></tr>
<tr class="memdesc:aa4ebb2541be58f9f0fecd8d7c108b817"><td class="mdescLeft">&#160;</td><td class="mdescRight">Integer sort algorithm using random access iterators with both right-shift and user-defined comparison operator. (All variants fall back to <code>std::sort</code> if the data size is too small, &lt; <code>detail::min_sort_size</code>). <a href="#aa4ebb2541be58f9f0fecd8d7c108b817">More...</a><br /></td></tr>
<tr class="separator:aa4ebb2541be58f9f0fecd8d7c108b817"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae50349854aad811f67a540d9b3aa4d4a"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Right_shift &gt; </td></tr>
<tr class="memitem:ae50349854aad811f67a540d9b3aa4d4a"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort.html#ae50349854aad811f67a540d9b3aa4d4a">boost::sort::integer_sort</a> (RandomAccessIter first, RandomAccessIter last, Right_shift shift)</td></tr>
<tr class="memdesc:ae50349854aad811f67a540d9b3aa4d4a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Integer sort algorithm using random access iterators with just right-shift functor. (All variants fall back to <code>std::sort</code> if the data size is too small, &lt; <code>detail::min_sort_size</code>). <a href="#ae50349854aad811f67a540d9b3aa4d4a">More...</a><br /></td></tr>
<tr class="separator:ae50349854aad811f67a540d9b3aa4d4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,300 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/include/boost/sort/spreadsort/integer_sort.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_1878a3f4746a95c6aad317458cc7ef80.html">boost</a></li><li class="navelem"><a class="el" href="dir_0dcad0da4f36218cbabb216021de9867.html">sort</a></li><li class="navelem"><a class="el" href="dir_4aa236a92b75d6f514e733718a475329.html">spreadsort</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">integer_sort.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="integer__sort_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//Templated Spreadsort-based implementation of integer_sort</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright Steven J. Ross 2001 - 2014.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Distributed under the Boost Software License, Version 1.0.</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// (See accompanying file LICENSE_1_0.txt or copy at</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// See http://www.boost.org/libs/sort/ for library home page.</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">Some improvements suggested by:</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">Phil Endecott and Frank Gennari</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">Doxygen comments by Paul A. Bristow Jan 2015</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#ifndef BOOST_INTEGER_SORT_HPP</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#define BOOST_INTEGER_SORT_HPP</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;cstring&gt;</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &lt;limits&gt;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &lt;boost/static_assert.hpp&gt;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;boost/sort/spreadsort/detail/constants.hpp&gt;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;boost/sort/spreadsort/detail/integer_sort.hpp&gt;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceboost.html">boost</a> {</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">namespace </span>sort {</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="comment">//Top-level sorting call for integers.</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment">/*! \brief Integer sort algorithm using random access iterators.</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> (All variants fall back to @c std::sort if the data size is too small, &lt; @c detail::min_sort_size).</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> \details @c integer_sort is a fast templated in-place hybrid radix/comparison algorithm,</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment">which in testing tends to be roughly 50% to 2X faster than @c std::sort for large tests (&gt;=100kB).\n</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment">Worst-case performance is &lt;em&gt; O(N * (lg(range)/s + s)) &lt;/em&gt;,</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment">so @c integer_sort is asymptotically faster</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment">than pure comparison-based algorithms. @c s is @c max_splits, which defaults to 11,</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment">so its worst-case with default settings for 32-bit integers is</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">&lt;em&gt; O(N * ((32/11) &lt;/em&gt; slow radix-based iterations fast comparison-based iterations).\n\n</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment">Some performance plots of runtime vs. n and log(range) are provided:\n</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> &lt;a href=&quot;../../doc/graph/windows_integer_sort.htm&quot;&gt; windows_integer_sort&lt;/a&gt;</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> \n</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> &lt;a href=&quot;../../doc/graph/osx_integer_sort.htm&quot;&gt; osx_integer_sort&lt;/a&gt;</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> \tparam RandomAccessIter &lt;a href=&quot;http://www.cplusplus.com/reference/iterator/RandomAccessIterator/&quot;&gt;Random access iterator&lt;/a&gt;</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> \param[in] first Iterator pointer to first element.</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment"> \param[in] last Iterator pointing to one beyond the end of data.</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"> \pre [@c first, @c last) is a valid range.</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"> \pre @c RandomAccessIter @c value_type is mutable.</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment"> \pre @c RandomAccessIter @c value_type is &lt;a href=&quot;http://en.cppreference.com/w/cpp/concept/LessThanComparable&quot;&gt;LessThanComparable&lt;/a&gt;</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"> \pre @c RandomAccessIter @c value_type supports the @c operator&gt;&gt;,</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"> which returns an integer-type right-shifted a specified number of bits.</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"> \post The elements in the range [@c first, @c last) are sorted in ascending order.</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment"> \throws std::exception Propagates exceptions if any of the element comparisons, the element swaps (or moves),</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"> the right shift, subtraction of right-shifted elements, functors, or any operations on iterators throw.</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment"> \warning Throwing an exception may cause data loss. This will also throw if a small vector resize throws, in which case there will be no data loss.</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="comment"> \warning Invalid arguments cause undefined behaviour.</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"> \note @c spreadsort function provides a wrapper that calls the fastest sorting algorithm available for a data type,</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment"> enabling faster generic-programming.</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> \remark The lesser of &lt;em&gt; O(N*log(N)) &lt;/em&gt; comparisons and &lt;em&gt; O(N*log(K/S + S)) &lt;/em&gt;operations worst-case, where:</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> \remark * N is @c last - @c first,</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> \remark * K is the log of the range in bits (32 for 32-bit integers using their full range),</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"> \remark * S is a constant called max_splits, defaulting to 11 (except for strings where it is the log of the character size).</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter&gt;</div>
<div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort.html#ae6ffbcf932699589fd2b93879f209013"> 75</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1sort.html#ae6ffbcf932699589fd2b93879f209013">integer_sort</a>(RandomAccessIter first, RandomAccessIter last)</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="comment">// Don&#39;t sort if it&#39;s too small to optimize.</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">if</span> (last - first &lt; detail::min_sort_size)</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; std::sort(first, last);</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="namespaceboost_1_1sort.html#ae50349854aad811f67a540d9b3aa4d4a">detail::integer_sort</a>(first, last, *first &gt;&gt; 0);</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment">/*! \brief Integer sort algorithm using random access iterators with both right-shift and user-defined comparison operator.</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"> (All variants fall back to @c std::sort if the data size is too small, &lt; @c detail::min_sort_size).</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"> \details @c integer_sort is a fast templated in-place hybrid radix/comparison algorithm,</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment">which in testing tends to be roughly 50% to 2X faster than @c std::sort for large tests (&gt;=100kB).\n</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment">Worst-case performance is &lt;em&gt; O(N * (lg(range)/s + s)) &lt;/em&gt;,</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment">so @c integer_sort is asymptotically faster</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment">than pure comparison-based algorithms. @c s is @c max_splits, which defaults to 11,</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment">so its worst-case with default settings for 32-bit integers is</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment">&lt;em&gt; O(N * ((32/11) &lt;/em&gt; slow radix-based iterations fast comparison-based iterations).\n\n</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment">Some performance plots of runtime vs. n and log(range) are provided:\n</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"> &lt;a href=&quot;../../doc/graph/windows_integer_sort.htm&quot;&gt; windows_integer_sort&lt;/a&gt;</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"> \n</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> &lt;a href=&quot;../../doc/graph/osx_integer_sort.htm&quot;&gt; osx_integer_sort&lt;/a&gt;</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> \tparam RandomAccessIter &lt;a href=&quot;http://www.cplusplus.com/reference/iterator/RandomAccessIterator/&quot;&gt;Random access iterator&lt;/a&gt;</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment"> \tparam Right_shift functor for right-shift by parameter @c shift bits.</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment"> \tparam Comp To provide @c operator&lt; for user-defined comparison.</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment"> \param[in] first Iterator pointer to first element.</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment"> \param[in] last Iterator pointing to one beyond the end of data.</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment"> \param[in] shift Number of bits to right-shift (using functor).</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment"> \param[in] comp comparison functor.</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment"> \pre [@c first, @c last) is a valid range.</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment"> \pre @c RandomAccessIter @c value_type is mutable.</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment"> \pre @c RandomAccessIter @c value_type is &lt;a href=&quot;http://en.cppreference.com/w/cpp/concept/LessThanComparable&quot;&gt;LessThanComparable&lt;/a&gt;</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="comment"> \pre @c RandomAccessIter @c value_type supports the @c operator&gt;&gt;,</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment"> which returns an integer-type right-shifted a specified number of bits.</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment"> \post The elements in the range [@c first, @c last) are sorted in ascending order.</span></div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment"> \return @c void.</span></div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment"> \throws std::exception Propagates exceptions if any of the element comparisons, the element swaps (or moves),</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment"> the right shift, subtraction of right-shifted elements, functors,</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="comment"> or any operations on iterators throw.</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="comment"> \warning Throwing an exception may cause data loss. This will also throw if a small vector resize throws, in which case there will be no data loss.</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="comment"> \warning Invalid arguments cause undefined behaviour.</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment"> \note @c spreadsort function provides a wrapper that calls the fastest sorting algorithm available for a data type,</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="comment"> enabling faster generic-programming.</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="comment"> \remark The lesser of &lt;em&gt; O(N*log(N)) &lt;/em&gt; comparisons and &lt;em&gt; O(N*log(K/S + S)) &lt;/em&gt;operations worst-case, where:</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="comment"> \remark * N is @c last - @c first,</span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment"> \remark * K is the log of the range in bits (32 for 32-bit integers using their full range),</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="comment"> \remark * S is a constant called max_splits, defaulting to 11 (except for strings where it is the log of the character size).</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Right_shift, <span class="keyword">class</span> Compare&gt;</div>
<div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort.html#aa4ebb2541be58f9f0fecd8d7c108b817"> 132</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1sort.html#ae6ffbcf932699589fd2b93879f209013">integer_sort</a>(RandomAccessIter first, RandomAccessIter last,</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; Right_shift shift, Compare comp) {</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">if</span> (last - first &lt; detail::min_sort_size)</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; std::sort(first, last, comp);</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="namespaceboost_1_1sort.html#ae50349854aad811f67a540d9b3aa4d4a">detail::integer_sort</a>(first, last, shift(*first, 0), shift, comp);</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment">/*! \brief Integer sort algorithm using random access iterators with just right-shift functor.</span></div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="comment"> (All variants fall back to @c std::sort if the data size is too small, &lt; @c detail::min_sort_size).</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment"> \details @c integer_sort is a fast templated in-place hybrid radix/comparison algorithm,</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="comment">which in testing tends to be roughly 50% to 2X faster than @c std::sort for large tests (&gt;=100kB).\n</span></div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="comment">\par Performance:</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="comment">Worst-case performance is &lt;em&gt; O(N * (lg(range)/s + s)) &lt;/em&gt;,</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="comment">so @c integer_sort is asymptotically faster</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="comment">than pure comparison-based algorithms. @c s is @c max_splits, which defaults to 11,</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="comment">so its worst-case with default settings for 32-bit integers is</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="comment">&lt;em&gt; O(N * ((32/11) &lt;/em&gt; slow radix-based iterations fast comparison-based iterations).\n\n</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="comment">Some performance plots of runtime vs. n and log(range) are provided:\n</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="comment"> * &lt;a href=&quot;../../doc/graph/windows_integer_sort.htm&quot;&gt; windows_integer_sort&lt;/a&gt;\n</span></div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="comment"> * &lt;a href=&quot;../../doc/graph/osx_integer_sort.htm&quot;&gt; osx_integer_sort&lt;/a&gt;</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="comment"> \tparam RandomAccessIter &lt;a href=&quot;http://www.cplusplus.com/reference/iterator/RandomAccessIterator/&quot;&gt;Random access iterator&lt;/a&gt;</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="comment"> \tparam Right_shift functor for right-shift by parameter @c shift bits.</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="comment"> \param[in] first Iterator pointer to first element.</span></div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="comment"> \param[in] last Iterator pointing to one beyond the end of data.</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment"> \param[in] shift Number of bits to right-shift (using functor).</span></div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="comment"> \pre [@c first, @c last) is a valid range.</span></div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="comment"> \pre @c RandomAccessIter @c value_type is mutable.</span></div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="comment"> \pre @c RandomAccessIter @c value_type is &lt;a href=&quot;http://en.cppreference.com/w/cpp/concept/LessThanComparable&quot;&gt;LessThanComparable&lt;/a&gt;</span></div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="comment"> \pre @c RandomAccessIter @c value_type supports the @c operator&gt;&gt;,</span></div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="comment"> which returns an integer-type right-shifted a specified number of bits.</span></div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="comment"> \post The elements in the range [@c first, @c last) are sorted in ascending order.</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="comment"> \throws std::exception Propagates exceptions if any of the element comparisons, the element swaps (or moves),</span></div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment"> the right shift, subtraction of right-shifted elements, functors,</span></div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="comment"> or any operations on iterators throw.</span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="comment"> \warning Throwing an exception may cause data loss. This will also throw if a small vector resize throws, in which case there will be no data loss.</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="comment"> \warning Invalid arguments cause undefined behaviour.</span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="comment"> \note @c spreadsort function provides a wrapper that calls the fastest sorting algorithm available for a data type,</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="comment"> enabling faster generic-programming.</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="comment"> \remark The lesser of &lt;em&gt; O(N*log(N)) &lt;/em&gt; comparisons and &lt;em&gt; O(N*log(K/S + S)) &lt;/em&gt;operations worst-case, where:</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="comment"> \remark * N is @c last - @c first,</span></div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="comment"> \remark * K is the log of the range in bits (32 for 32-bit integers using their full range),</span></div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="comment"> \remark * S is a constant called max_splits, defaulting to 11 (except for strings where it is the log of the character size).</span></div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Right_shift&gt;</div>
<div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort.html#ae50349854aad811f67a540d9b3aa4d4a"> 186</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1sort.html#ae6ffbcf932699589fd2b93879f209013">integer_sort</a>(RandomAccessIter first, RandomAccessIter last,</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; Right_shift shift) {</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">if</span> (last - first &lt; detail::min_sort_size)</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; std::sort(first, last);</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">else</span></div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <a class="code" href="namespaceboost_1_1sort.html#ae50349854aad811f67a540d9b3aa4d4a">detail::integer_sort</a>(first, last, shift(*first, 0), shift);</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; }</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;}</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;}</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div>
<div class="ttc" id="namespaceboost_1_1sort_html_ae6ffbcf932699589fd2b93879f209013"><div class="ttname"><a href="namespaceboost_1_1sort.html#ae6ffbcf932699589fd2b93879f209013">boost::sort::integer_sort</a></div><div class="ttdeci">void integer_sort(RandomAccessIter first, RandomAccessIter last)</div><div class="ttdoc">Integer sort algorithm using random access iterators. (All variants fall back to std::sort if the dat...</div><div class="ttdef"><b>Definition:</b> integer_sort.hpp:75</div></div>
<div class="ttc" id="namespaceboost_html"><div class="ttname"><a href="namespaceboost.html">boost</a></div><div class="ttdef"><b>Definition:</b> float_sort.hpp:27</div></div>
<div class="ttc" id="namespaceboost_1_1sort_html_ae50349854aad811f67a540d9b3aa4d4a"><div class="ttname"><a href="namespaceboost_1_1sort.html#ae50349854aad811f67a540d9b3aa4d4a">boost::sort::integer_sort</a></div><div class="ttdeci">void integer_sort(RandomAccessIter first, RandomAccessIter last, Right_shift shift)</div><div class="ttdoc">Integer sort algorithm using random access iterators with just right-shift functor. (All variants fall back to std::sort if the data size is too small, < detail::min_sort_size). </div><div class="ttdef"><b>Definition:</b> integer_sort.hpp:186</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

68
doc/doxygen/html/jquery.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,155 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/example/keyplusdatasample.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html">example</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">keyplusdatasample.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="spreadsort_8hpp_source.html">boost/sort/spreadsort/spreadsort.hpp</a>&gt;</code><br />
<code>#include &lt;time.h&gt;</code><br />
<code>#include &lt;stdio.h&gt;</code><br />
<code>#include &lt;stdlib.h&gt;</code><br />
<code>#include &lt;algorithm&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
<code>#include &lt;fstream&gt;</code><br />
<code>#include &lt;sstream&gt;</code><br />
<code>#include &lt;iostream&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlessthan.html">lessthan</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrightshift.html">rightshift</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a217dbf8b442f20279ea00b898af96f52"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="keyplusdatasample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">main</a> (int argc, const char **argv)</td></tr>
<tr class="separator:a217dbf8b442f20279ea00b898af96f52"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a217dbf8b442f20279ea00b898af96f52"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char **&#160;</td>
<td class="paramname"><em>argv</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,182 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/example/mostlysorted.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html">example</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">mostlysorted.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="spreadsort_8hpp_source.html">boost/sort/spreadsort/spreadsort.hpp</a>&gt;</code><br />
<code>#include &lt;time.h&gt;</code><br />
<code>#include &lt;stdio.h&gt;</code><br />
<code>#include &lt;stdlib.h&gt;</code><br />
<code>#include &lt;algorithm&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
<code>#include &lt;fstream&gt;</code><br />
<code>#include &lt;sstream&gt;</code><br />
<code>#include &lt;iostream&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:afb8c72ce35c4a1f4a2588d6573e54aa1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mostlysorted_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a>&#160;&#160;&#160;int</td></tr>
<tr class="separator:afb8c72ce35c4a1f4a2588d6573e54aa1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a0154ebfc03900bb5789ff9a306a480a9"><td class="memItemLeft" align="right" valign="top">unsigned&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mostlysorted_8cpp.html#a0154ebfc03900bb5789ff9a306a480a9">get_index</a> (unsigned count)</td></tr>
<tr class="separator:a0154ebfc03900bb5789ff9a306a480a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a217dbf8b442f20279ea00b898af96f52"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mostlysorted_8cpp.html#a217dbf8b442f20279ea00b898af96f52">main</a> (int argc, const char **argv)</td></tr>
<tr class="separator:a217dbf8b442f20279ea00b898af96f52"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="afb8c72ce35c4a1f4a2588d6573e54aa1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define <a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a>&#160;&#160;&#160;int</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a0154ebfc03900bb5789ff9a306a480a9"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned get_index </td>
<td>(</td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>count</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a217dbf8b442f20279ea00b898af96f52"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char **&#160;</td>
<td class="paramname"><em>argv</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,104 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: boost Namespace Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="namespaces.html"><span>Namespace&#160;List</span></a></li>
<li><a href="namespacemembers.html"><span>Namespace&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> </div>
<div class="headertitle">
<div class="title">boost Namespace Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespaceboost_1_1sort"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort.html">sort</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,118 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: Namespace Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="namespaces.html"><span>Namespace&#160;List</span></a></li>
<li class="current"><a href="namespacemembers.html"><span>Namespace&#160;Members</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
<li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
</ul>
</div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
<div class="textblock">Here is a list of all namespace members with links to the namespace documentation for each member:</div><ul>
<li>float_mem_cast()
: <a class="el" href="namespaceboost_1_1sort.html#ac3a946e197df6cfc4968c6371ace319b">boost::sort</a>
</li>
<li>float_sort()
: <a class="el" href="namespaceboost_1_1sort.html#acbcfc139de18c5c35c0ff1744c56e211">boost::sort</a>
</li>
<li>integer_sort()
: <a class="el" href="namespaceboost_1_1sort.html#ae6ffbcf932699589fd2b93879f209013">boost::sort</a>
</li>
<li>reverse_string_sort()
: <a class="el" href="namespaceboost_1_1sort.html#a4ad4785d90f47d51ff1d2fac8c21bb48">boost::sort</a>
</li>
<li>spreadsort()
: <a class="el" href="namespaceboost_1_1sort.html#a4bc25fdacd4c948f631f08a3f9aa38eb">boost::sort</a>
</li>
<li>string_sort()
: <a class="el" href="namespaceboost_1_1sort.html#a950a2dbbe75f048a0b343dbf7c532dc0">boost::sort</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,128 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: Namespace Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="namespaces.html"><span>Namespace&#160;List</span></a></li>
<li class="current"><a href="namespacemembers.html"><span>Namespace&#160;Members</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li><a href="namespacemembers.html"><span>All</span></a></li>
<li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
<li class="current"><a href="namespacemembers_eval.html"><span>Enumerator</span></a></li>
</ul>
</div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
&#160;<ul>
<li>float_log_finishing_count
: <a class="el" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a498b754f6198248703d3907562207d28">boost::sort::detail</a>
</li>
<li>float_log_mean_bin_size
: <a class="el" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a0631b5d90d6ff0f1ff5370c616047a33">boost::sort::detail</a>
</li>
<li>float_log_min_split_count
: <a class="el" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907aa0ee6e920e1d3d09e148ce00a985340c">boost::sort::detail</a>
</li>
<li>int_log_finishing_count
: <a class="el" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907ae0c3ec0c116b92c92015245fd5024a27">boost::sort::detail</a>
</li>
<li>int_log_mean_bin_size
: <a class="el" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a2e171c91f6c9e1d82643e4b35a4c65de">boost::sort::detail</a>
</li>
<li>int_log_min_split_count
: <a class="el" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a53383c14d73d50ed8faaa695d820a5bf">boost::sort::detail</a>
</li>
<li>max_finishing_splits
: <a class="el" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907acfdc43b3d7aa6df69b0f6982918056c7">boost::sort::detail</a>
</li>
<li>max_splits
: <a class="el" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907a17b216febe1b5e8212a80231592fc9d9">boost::sort::detail</a>
</li>
<li>min_sort_size
: <a class="el" href="namespaceboost_1_1sort_1_1detail.html#a7bbd2027f75936442318063f34953907aff33660c3058d4e081b7d4353aae659d">boost::sort::detail</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 7 2015 17:29:22 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,118 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: Namespace Members</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="namespaces.html"><span>Namespace&#160;List</span></a></li>
<li class="current"><a href="namespacemembers.html"><span>Namespace&#160;Members</span></a></li>
</ul>
</div>
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li><a href="namespacemembers.html"><span>All</span></a></li>
<li class="current"><a href="namespacemembers_func.html"><span>Functions</span></a></li>
</ul>
</div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
&#160;<ul>
<li>float_mem_cast()
: <a class="el" href="namespaceboost_1_1sort.html#ac3a946e197df6cfc4968c6371ace319b">boost::sort</a>
</li>
<li>float_sort()
: <a class="el" href="namespaceboost_1_1sort.html#acbcfc139de18c5c35c0ff1744c56e211">boost::sort</a>
</li>
<li>integer_sort()
: <a class="el" href="namespaceboost_1_1sort.html#ae6ffbcf932699589fd2b93879f209013">boost::sort</a>
</li>
<li>reverse_string_sort()
: <a class="el" href="namespaceboost_1_1sort.html#a4ad4785d90f47d51ff1d2fac8c21bb48">boost::sort</a>
</li>
<li>spreadsort()
: <a class="el" href="namespaceboost_1_1sort.html#a4bc25fdacd4c948f631f08a3f9aa38eb">boost::sort</a>
</li>
<li>string_sort()
: <a class="el" href="namespaceboost_1_1sort.html#a950a2dbbe75f048a0b343dbf7c532dc0">boost::sort</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,102 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: Namespace List</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li class="current"><a href="namespaces.html"><span>Namespace&#160;List</span></a></li>
<li><a href="namespacemembers.html"><span>Namespace&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">Namespace List</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all namespaces with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceboost.html" target="_self">boost</a></td><td class="desc"></td></tr>
<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceboost_1_1sort.html" target="_self">sort</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

BIN
doc/doxygen/html/nav_f.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 B

BIN
doc/doxygen/html/nav_g.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 B

BIN
doc/doxygen/html/nav_h.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 B

BIN
doc/doxygen/html/open.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 B

View File

@@ -0,0 +1,217 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/example/parallelint.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html">example</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">parallelint.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="spreadsort_8hpp_source.html">boost/sort/spreadsort/spreadsort.hpp</a>&gt;</code><br />
<code>#include &lt;boost/thread.hpp&gt;</code><br />
<code>#include &lt;time.h&gt;</code><br />
<code>#include &lt;stdio.h&gt;</code><br />
<code>#include &lt;stdlib.h&gt;</code><br />
<code>#include &lt;algorithm&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
<code>#include &lt;fstream&gt;</code><br />
<code>#include &lt;sstream&gt;</code><br />
<code>#include &lt;iostream&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:afb8c72ce35c4a1f4a2588d6573e54aa1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="parallelint_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a>&#160;&#160;&#160;int</td></tr>
<tr class="separator:afb8c72ce35c4a1f4a2588d6573e54aa1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:af6d351e5a33a6614628ba40ab9776aa6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="parallelint_8cpp.html#af6d351e5a33a6614628ba40ab9776aa6">is_sorted</a> (const std::vector&lt; <a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a> &gt; &amp;array)</td></tr>
<tr class="separator:af6d351e5a33a6614628ba40ab9776aa6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acbd0dadb301334e73befdafddd98b044"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="parallelint_8cpp.html#acbd0dadb301334e73befdafddd98b044">sort_loop</a> (const std::vector&lt; <a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a> &gt; &amp;base_array, bool stdSort, unsigned loopCount)</td></tr>
<tr class="separator:acbd0dadb301334e73befdafddd98b044"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a217dbf8b442f20279ea00b898af96f52"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="parallelint_8cpp.html#a217dbf8b442f20279ea00b898af96f52">main</a> (int argc, const char **argv)</td></tr>
<tr class="separator:a217dbf8b442f20279ea00b898af96f52"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="afb8c72ce35c4a1f4a2588d6573e54aa1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define <a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a>&#160;&#160;&#160;int</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="af6d351e5a33a6614628ba40ab9776aa6"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool is_sorted </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; <a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>array</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a217dbf8b442f20279ea00b898af96f52"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char **&#160;</td>
<td class="paramname"><em>argv</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="acbd0dadb301334e73befdafddd98b044"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void sort_loop </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; <a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>base_array</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>stdSort</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned&#160;</td>
<td class="paramname"><em>loopCount</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,166 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/example/parallelstring.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html">example</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">parallelstring.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;boost/random/mersenne_twister.hpp&gt;</code><br />
<code>#include &lt;boost/random/uniform_int_distribution.hpp&gt;</code><br />
<code>#include &lt;<a class="el" href="spreadsort_8hpp_source.html">boost/sort/spreadsort/spreadsort.hpp</a>&gt;</code><br />
<code>#include &lt;boost/thread.hpp&gt;</code><br />
<code>#include &lt;time.h&gt;</code><br />
<code>#include &lt;stdio.h&gt;</code><br />
<code>#include &lt;stdlib.h&gt;</code><br />
<code>#include &lt;algorithm&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
<code>#include &lt;iostream&gt;</code><br />
<code>#include &lt;fstream&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:afb8c72ce35c4a1f4a2588d6573e54aa1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="parallelstring_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a>&#160;&#160;&#160;string</td></tr>
<tr class="separator:afb8c72ce35c4a1f4a2588d6573e54aa1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a217dbf8b442f20279ea00b898af96f52"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="parallelstring_8cpp.html#a217dbf8b442f20279ea00b898af96f52">main</a> (int argc, const char **argv)</td></tr>
<tr class="separator:a217dbf8b442f20279ea00b898af96f52"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="afb8c72ce35c4a1f4a2588d6573e54aa1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define <a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a>&#160;&#160;&#160;string</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a217dbf8b442f20279ea00b898af96f52"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char **&#160;</td>
<td class="paramname"><em>argv</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,141 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/example/randomgen.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html">example</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">randomgen.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;boost/random/mersenne_twister.hpp&gt;</code><br />
<code>#include &lt;boost/random/uniform_int_distribution.hpp&gt;</code><br />
<code>#include &lt;stdio.h&gt;</code><br />
<code>#include &quot;stdlib.h&quot;</code><br />
<code>#include &lt;fstream&gt;</code><br />
<code>#include &lt;iostream&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a217dbf8b442f20279ea00b898af96f52"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="randomgen_8cpp.html#a217dbf8b442f20279ea00b898af96f52">main</a> (int argc, const char **argv)</td></tr>
<tr class="separator:a217dbf8b442f20279ea00b898af96f52"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a217dbf8b442f20279ea00b898af96f52"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char **&#160;</td>
<td class="paramname"><em>argv</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,175 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/example/reverseintsample.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html">example</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">reverseintsample.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>integer sort with a rightshift functor reverse sorting example.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;<a class="el" href="spreadsort_8hpp_source.html">boost/sort/spreadsort/spreadsort.hpp</a>&gt;</code><br />
<code>#include &lt;time.h&gt;</code><br />
<code>#include &lt;stdio.h&gt;</code><br />
<code>#include &lt;stdlib.h&gt;</code><br />
<code>#include &lt;algorithm&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
<code>#include &lt;fstream&gt;</code><br />
<code>#include &lt;iostream&gt;</code><br />
<code>#include &lt;functional&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structnegrightshift.html">negrightshift</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:afb8c72ce35c4a1f4a2588d6573e54aa1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="reverseintsample_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a>&#160;&#160;&#160;int</td></tr>
<tr class="separator:afb8c72ce35c4a1f4a2588d6573e54aa1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a217dbf8b442f20279ea00b898af96f52"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="reverseintsample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">main</a> (int argc, const char **argv)</td></tr>
<tr class="separator:a217dbf8b442f20279ea00b898af96f52"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>integer sort with a rightshift functor reverse sorting example. </p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="afb8c72ce35c4a1f4a2588d6573e54aa1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define <a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a>&#160;&#160;&#160;int</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a217dbf8b442f20279ea00b898af96f52"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char **&#160;</td>
<td class="paramname"><em>argv</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,156 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/example/reversestringfunctorsample.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html">example</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">reversestringfunctorsample.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="string__sort_8hpp_source.html">boost/sort/spreadsort/string_sort.hpp</a>&gt;</code><br />
<code>#include &lt;time.h&gt;</code><br />
<code>#include &lt;stdio.h&gt;</code><br />
<code>#include &lt;stdlib.h&gt;</code><br />
<code>#include &lt;algorithm&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
<code>#include &lt;iostream&gt;</code><br />
<code>#include &lt;fstream&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structgreaterthan.html">greaterthan</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structbracket.html">bracket</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structgetsize.html">getsize</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a217dbf8b442f20279ea00b898af96f52"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="reversestringfunctorsample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">main</a> (int argc, const char **argv)</td></tr>
<tr class="separator:a217dbf8b442f20279ea00b898af96f52"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a217dbf8b442f20279ea00b898af96f52"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char **&#160;</td>
<td class="paramname"><em>argv</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

View File

@@ -0,0 +1,163 @@
<!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/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>Boost.Sort: I:/modular-boost/libs/sort/example/reversestringsample.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.Sort
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html">example</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">reversestringsample.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;<a class="el" href="string__sort_8hpp_source.html">boost/sort/spreadsort/string_sort.hpp</a>&gt;</code><br />
<code>#include &lt;time.h&gt;</code><br />
<code>#include &lt;stdio.h&gt;</code><br />
<code>#include &lt;stdlib.h&gt;</code><br />
<code>#include &lt;algorithm&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
<code>#include &lt;iostream&gt;</code><br />
<code>#include &lt;fstream&gt;</code><br />
<code>#include &lt;string&gt;</code><br />
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:afb8c72ce35c4a1f4a2588d6573e54aa1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="reversestringsample_8cpp.html#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a>&#160;&#160;&#160;string</td></tr>
<tr class="separator:afb8c72ce35c4a1f4a2588d6573e54aa1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a217dbf8b442f20279ea00b898af96f52"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="reversestringsample_8cpp.html#a217dbf8b442f20279ea00b898af96f52">main</a> (int argc, const char **argv)</td></tr>
<tr class="separator:a217dbf8b442f20279ea00b898af96f52"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="afb8c72ce35c4a1f4a2588d6573e54aa1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define <a class="el" href="struct_d_a_t_a___t_y_p_e.html">DATA_TYPE</a>&#160;&#160;&#160;string</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a217dbf8b442f20279ea00b898af96f52"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char **&#160;</td>
<td class="paramname"><em>argv</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jan 9 2015 14:20:24 for Boost.Sort by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show More