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

Doc tweaks from latest review, including spreadsort performance.

This commit is contained in:
Steven Ross
2017-10-29 22:34:00 -04:00
parent 57f08b8914
commit 7dc099cc67
31 changed files with 217 additions and 215 deletions

View File

@@ -523,7 +523,7 @@ Some performance plots of runtime vs. n and log(range) are provided:<sbr/>
<template-type-parameter name="RandomAccessIter"/>
<template-type-parameter name="Get_char"/>
<template-type-parameter name="Get_length"/>
</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>Bracket functor equivalent to <computeroutput>operator</computeroutput>[], taking a number corresponding to the character offset. </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>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/>
</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="get_character"><paramtype>Get_char</paramtype><description><para>Bracket functor equivalent to <computeroutput>operator</computeroutput>[], taking a number corresponding to the character offset. </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>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>string_sort</computeroutput> is asymptotically faster than pure comparison-based algorithms. <sbr/>
<sbr/>
Some performance plots of runtime vs. n and log(range) are provided:<sbr/>
@@ -549,7 +549,7 @@ Some performance plots of runtime vs. n and log(range) are provided:<sbr/>
<template-type-parameter name="Range"/>
<template-type-parameter name="Get_char"/>
<template-type-parameter name="Get_length"/>
</template><parameter name="range"><paramtype>Range &amp;</paramtype><description><para>Range [first, last) for sorting. </para></description></parameter><parameter name="getchar"><paramtype>Get_char</paramtype><description><para>Bracket functor equivalent to <computeroutput>operator</computeroutput>[], taking a number corresponding to the character offset. </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 range, 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>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/>
</template><parameter name="range"><paramtype>Range &amp;</paramtype><description><para>Range [first, last) for sorting. </para></description></parameter><parameter name="get_character"><paramtype>Get_char</paramtype><description><para>Bracket functor equivalent to <computeroutput>operator</computeroutput>[], taking a number corresponding to the character offset. </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 range, 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>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>string_sort</computeroutput> is asymptotically faster than pure comparison-based algorithms. <sbr/>
<sbr/>
Some performance plots of runtime vs. n and log(range) are provided:<sbr/>
@@ -573,7 +573,7 @@ Some performance plots of runtime vs. n and log(range) are provided:<sbr/>
<template-type-parameter name="Get_char"/>
<template-type-parameter name="Get_length"/>
<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>Bracket functor equivalent to <computeroutput>operator</computeroutput>[], taking a number corresponding to the character offset. </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><parameter name="comp"><paramtype>Compare</paramtype><description><para>A binary functor that returns whether the first element passed to it should go before the second in order.</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>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/>
</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="get_character"><paramtype>Get_char</paramtype><description><para>Bracket functor equivalent to <computeroutput>operator</computeroutput>[], taking a number corresponding to the character offset. </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><parameter name="comp"><paramtype>Compare</paramtype><description><para>A binary functor that returns whether the first element passed to it should go before the second in order.</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>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>string_sort</computeroutput> is asymptotically faster than pure comparison-based algorithms. <sbr/>
<sbr/>
Some performance plots of runtime vs. n and log(range) are provided:<sbr/>
@@ -599,7 +599,7 @@ Some performance plots of runtime vs. n and log(range) are provided:<sbr/>
<template-type-parameter name="Get_char"/>
<template-type-parameter name="Get_length"/>
<template-type-parameter name="Compare"/>
</template><parameter name="range"><paramtype>Range &amp;</paramtype><description><para>Range [first, last) for sorting. </para></description></parameter><parameter name="getchar"><paramtype>Get_char</paramtype><description><para>Bracket functor equivalent to <computeroutput>operator</computeroutput>[], taking a number corresponding to the character offset. </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><parameter name="comp"><paramtype>Compare</paramtype><description><para>A binary functor that returns whether the first element passed to it should go before the second in order.</para></description></parameter><purpose>String sort algorithm using range, 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>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/>
</template><parameter name="range"><paramtype>Range &amp;</paramtype><description><para>Range [first, last) for sorting. </para></description></parameter><parameter name="get_character"><paramtype>Get_char</paramtype><description><para>Bracket functor equivalent to <computeroutput>operator</computeroutput>[], taking a number corresponding to the character offset. </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><parameter name="comp"><paramtype>Compare</paramtype><description><para>A binary functor that returns whether the first element passed to it should go before the second in order.</para></description></parameter><purpose>String sort algorithm using range, 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>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>string_sort</computeroutput> is asymptotically faster than pure comparison-based algorithms. <sbr/>
<sbr/>
Some performance plots of runtime vs. n and log(range) are provided:<sbr/>
@@ -623,7 +623,7 @@ Some performance plots of runtime vs. n and log(range) are provided:<sbr/>
<template-type-parameter name="Get_char"/>
<template-type-parameter name="Get_length"/>
<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>Bracket functor equivalent to <computeroutput>operator</computeroutput>[], taking a number corresponding to the character offset. </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><parameter name="comp"><paramtype>Compare</paramtype><description><para>A binary functor that returns whether the first element passed to it should go before the second in order.</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>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/>
</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="get_character"><paramtype>Get_char</paramtype><description><para>Bracket functor equivalent to <computeroutput>operator</computeroutput>[], taking a number corresponding to the character offset. </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><parameter name="comp"><paramtype>Compare</paramtype><description><para>A binary functor that returns whether the first element passed to it should go before the second in order.</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>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>string_sort</computeroutput> is asymptotically faster than pure comparison-based algorithms. <sbr/>
<sbr/>
Some performance plots of runtime vs. n and log(range) are provided:<sbr/>
@@ -649,7 +649,7 @@ Some performance plots of runtime vs. n and log(range) are provided:<sbr/>
<template-type-parameter name="Get_char"/>
<template-type-parameter name="Get_length"/>
<template-type-parameter name="Compare"/>
</template><parameter name="range"><paramtype>Range &amp;</paramtype><description><para>Range [first, last) for sorting. </para></description></parameter><parameter name="getchar"><paramtype>Get_char</paramtype><description><para>Bracket functor equivalent to <computeroutput>operator</computeroutput>[], taking a number corresponding to the character offset. </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><parameter name="comp"><paramtype>Compare</paramtype><description><para>A binary functor that returns whether the first element passed to it should go before the second in order.</para></description></parameter><purpose>Reverse String sort algorithm using range. </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>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/>
</template><parameter name="range"><paramtype>Range &amp;</paramtype><description><para>Range [first, last) for sorting. </para></description></parameter><parameter name="get_character"><paramtype>Get_char</paramtype><description><para>Bracket functor equivalent to <computeroutput>operator</computeroutput>[], taking a number corresponding to the character offset. </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><parameter name="comp"><paramtype>Compare</paramtype><description><para>A binary functor that returns whether the first element passed to it should go before the second in order.</para></description></parameter><purpose>Reverse String sort algorithm using range. </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>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>string_sort</computeroutput> is asymptotically faster than pure comparison-based algorithms. <sbr/>
<sbr/>
Some performance plots of runtime vs. n and log(range) are provided:<sbr/>

View File

@@ -60,7 +60,7 @@ Sorting 100 000 000 64 bits numbers, the measured memory used was:
[h4[_Thread specification]]
[:
This algorithm have a integer parameter indicating the *number of thread* to use in the sorting process,
This algorithm has an integer parameter indicating the *number of threads* to use in the sorting process,
which always is the last value in the call. The default value (if left unspecified) is the number of HW threads of
the machine where the program is running provided by std::thread::hardware_concurrency().
@@ -76,9 +76,9 @@ If this value is 0, the program is executed with 1 thread.
[h4[_Programming]]
[:
Only need to include the file boost/sort/sort.hpp to use this algorithm
You only need to include the file boost/sort/sort.hpp to use this algorithm
The algorithm run in the namespace boost::sort
The algorithm runs in the namespace boost::sort
[c++]
``
@@ -99,15 +99,15 @@ The algorithm run in the namespace boost::sort
void block_indirect_sort (iter_t first, iter_t last, compare comp, uint32_t num_thread);
``
This algorithm need a *C++11 compliant compiler*. Don't need any other code or library. With older compilers it is not guarantee, the correct operation.
This algorithm needs a *C++11 compliant compiler*. You don't need any other code or library. With older compilers correct operation is not guaranteed.
If the number of threads is unspecified, use the result of std::thread::hardware_concurrency()
The algorithm use a *comparison object*, in the same way as the standard library sort
algorithms. If don't define, the comparison object is std::less, which uses internally
the < operator.
This algorithm uses a *comparison object*, in the same way as the standard library sort
algorithms. If not defined, the comparison object is std::less, which uses
the < operator internally.
The algorithm is [*exception safe], meaning that, the exceptions generated by the algorithm
This algorithm is [*exception safe], meaning that, the exceptions generated by the algorithm
guarantee the integrity of the objects to sort, but not their relative order. If the exception
is generated inside the objects (in the move or in the copy constructor.. ) the results can be
unpredictable.
@@ -147,7 +147,7 @@ Divide the data in parts, and each part is sorted by a thread. When
the parts are sorted, they are merged to obtain the final results. These algorithms need additional memory for the
merge, usually the same size as the data.
With a small number of threads, these algorithms have similar speed than
With a small number of threads, these algorithms have similar speed to
the subdivision algorithms, but with many threads are much faster.
Examples of this category are
@@ -164,7 +164,7 @@ This generates an *undesirable duality*. With a small number of threads the opti
For this reason, the SW designed for a *small machine* is *inadequate* for a *big machine* and vice versa.
Use only *merging algorithms*, have the *problem of the additional memory* used, usually of the same size as the data.
Using only *merging algorithms*, has the *problem of the additional memory* used, usually of the same size as the data.
[h4[_New Parallel Sort Algorithm (Block Indirect Sort)]]
@@ -174,14 +174,14 @@ This algorithm, named Block Indirect Sort, created for processors connected with
*With small number of threads, it is a subdivision algorithm.
*With many threads is a merging algorithms, with a small auxiliary memory ( block_size * number of threads).
*With many threads it is a merging algorithm, with a small auxiliary memory ( block_size * number of threads).
This algorithm *eliminates the duality*. The same code have *optimal performance* with a small and a big number of threads.
This algorithm *eliminates the duality*. The same code has *optimal performance* with a small and a big number of threads.
The number of threads to use is evaluate in each execution.
The number of threads to use is evaluated in each execution.
When the program runs with a *small number of threads* the algorithm
internally uses a *subdivision algorithm* and has similar performance to TBB, and when run with *many threads*,
internally uses the *new algorithm* and has the performance of GCC Parallel Sort, with the additional advantage of *reduced memory consumption*.
it internally uses the *new algorithm* and has the performance of GCC Parallel Sort, with the additional advantage of *reduced memory consumption*.
]]

View File

@@ -130,7 +130,7 @@ Functions</h2></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="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 get_character, 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>
@@ -139,13 +139,13 @@ Functions</h2></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="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 get_character, 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="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 get_character, 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="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 get_character, Get_length length, Compare comp)</td></tr>
<tr class="separator:ab71cd7c25eada649fa1aff16fb3549f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->

View File

@@ -168,7 +168,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<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="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordtype">size_t</span> &amp;char_offset, Get_char get_character, 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>
@@ -177,7 +177,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<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="l00090"></a><span class="lineno"> 90</span>&#160; || get_character((*curr), nextOffset) != get_character((*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>
@@ -234,14 +234,14 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<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="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">get_character</a>(x, u) != <a class="code" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#afb5424173c237d8cd25722a02c23ab30">get_character</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">get_character</a>(x, u) &lt; <a class="code" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#afb5424173c237d8cd25722a02c23ab30">get_character</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="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">get_character</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>
@@ -468,7 +468,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<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="l00381"></a><span class="lineno"> 381</span>&#160; Get_char get_character, 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>
@@ -483,7 +483,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<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="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, get_character, 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>
@@ -499,7 +499,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<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="l00412"></a><span class="lineno"> 412</span>&#160; bin_sizes[get_character((*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>
@@ -518,7 +518,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<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="l00431"></a><span class="lineno"> 431</span>&#160; target_bin = bins + get_character((*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>
@@ -535,9 +535,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<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="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keywordflow">for</span> (target_bin = bins + get_character((*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="l00450"></a><span class="lineno"> 450</span>&#160; target_bin = bins + get_character((*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>
@@ -560,7 +560,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<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="l00473"></a><span class="lineno"> 473</span>&#160; cache_end, bin_sizes, get_character, 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>
@@ -571,7 +571,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<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="l00484"></a><span class="lineno"> 484</span>&#160; Get_char get_character, 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>
@@ -584,7 +584,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<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="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, get_character, 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>
@@ -600,7 +600,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<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="l00513"></a><span class="lineno"> 513</span>&#160; bin_sizes[get_character((*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>
@@ -619,7 +619,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<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="l00532"></a><span class="lineno"> 532</span>&#160; target_bin = bins + get_character((*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>
@@ -636,9 +636,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<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="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">for</span> (target_bin = bins + get_character((*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="l00551"></a><span class="lineno"> 551</span>&#160; target_bin = bins + get_character((*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>
@@ -661,7 +661,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<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="l00574"></a><span class="lineno"> 574</span>&#160; bin_sizes, get_character, 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>
@@ -672,7 +672,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<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="l00585"></a><span class="lineno"> 585</span>&#160; Get_char get_character, 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>
@@ -687,7 +687,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<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="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, get_character, 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>
@@ -705,7 +705,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<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="l00618"></a><span class="lineno"> 618</span>&#160; bin_sizes[max_bin - get_character((*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>
@@ -724,7 +724,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<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="l00637"></a><span class="lineno"> 637</span>&#160; target_bin = end_bin - get_character((*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>
@@ -742,9 +742,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<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="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keywordflow">for</span> (target_bin = end_bin - get_character((*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="l00657"></a><span class="lineno"> 657</span>&#160; target_bin = end_bin - get_character((*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>
@@ -766,7 +766,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<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="l00679"></a><span class="lineno"> 679</span>&#160; bin_sizes, get_character, 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>
@@ -826,12 +826,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<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="l00739"></a><span class="lineno"> 739</span>&#160; Get_char get_character, 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="l00744"></a><span class="lineno"> 744</span>&#160; Get_length&gt;(first, last, 0, bin_cache, 0, bin_sizes, get_character, 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>
@@ -839,7 +839,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<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="l00752"></a><span class="lineno"> 752</span>&#160; Get_char get_character, 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>
@@ -852,13 +852,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<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="l00765"></a><span class="lineno"> 765</span>&#160; Get_char get_character, 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="l00771"></a><span class="lineno"> 771</span>&#160; (first, last, 0, bin_cache, 0, bin_sizes, get_character, 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>
@@ -867,7 +867,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<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="l00780"></a><span class="lineno"> 780</span>&#160; Get_char get_character, 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>
@@ -880,13 +880,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<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="l00793"></a><span class="lineno"> 793</span>&#160; Get_char get_character, 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="l00799"></a><span class="lineno"> 799</span>&#160; (first, last, 0, bin_cache, 0, bin_sizes, get_character, 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>
@@ -894,7 +894,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<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="l00807"></a><span class="lineno"> 807</span>&#160; Get_char get_character, 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>
@@ -926,7 +926,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<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_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::get_character</a></div><div class="ttdeci">Get_char get_character</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 -->

View File

@@ -152,15 +152,15 @@ Functions</h2></td></tr>
<tr class="memdesc:afd4938835fd03aab9c42bd0653e5dbe5"><td class="mdescLeft">&#160;</td><td class="mdescRight">String sort algorithm using random access iterators, wraps using default of <code>unsigned</code> char. <a href="#afd4938835fd03aab9c42bd0653e5dbe5">More...</a><br /></td></tr>
<tr class="separator:afd4938835fd03aab9c42bd0653e5dbe5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5143ec4f58cfe13eca2a0d6b6f6a6680"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Get_char , class Get_length &gt; </td></tr>
<tr class="memitem:a5143ec4f58cfe13eca2a0d6b6f6a6680"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort.html#a5143ec4f58cfe13eca2a0d6b6f6a6680">string_sort</a> (RandomAccessIter first, RandomAccessIter last, Get_char getchar, Get_length length)</td></tr>
<tr class="memitem:a5143ec4f58cfe13eca2a0d6b6f6a6680"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort.html#a5143ec4f58cfe13eca2a0d6b6f6a6680">string_sort</a> (RandomAccessIter first, RandomAccessIter last, Get_char get_character, Get_length length)</td></tr>
<tr class="memdesc:a5143ec4f58cfe13eca2a0d6b6f6a6680"><td class="mdescLeft">&#160;</td><td class="mdescRight">String sort algorithm using random access iterators, wraps using default of <code>unsigned</code> char. <a href="#a5143ec4f58cfe13eca2a0d6b6f6a6680">More...</a><br /></td></tr>
<tr class="separator:a5143ec4f58cfe13eca2a0d6b6f6a6680"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a82c4c0d7ba9873ecce7c674631dceae2"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Get_char , class Get_length , class Compare &gt; </td></tr>
<tr class="memitem:a82c4c0d7ba9873ecce7c674631dceae2"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort.html#a82c4c0d7ba9873ecce7c674631dceae2">string_sort</a> (RandomAccessIter first, RandomAccessIter last, Get_char getchar, Get_length length, Compare comp)</td></tr>
<tr class="memitem:a82c4c0d7ba9873ecce7c674631dceae2"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort.html#a82c4c0d7ba9873ecce7c674631dceae2">string_sort</a> (RandomAccessIter first, RandomAccessIter last, Get_char get_character, Get_length length, Compare comp)</td></tr>
<tr class="memdesc:a82c4c0d7ba9873ecce7c674631dceae2"><td class="mdescLeft">&#160;</td><td class="mdescRight">String sort algorithm using random access iterators, wraps using default of <code>unsigned</code> char. <a href="#a82c4c0d7ba9873ecce7c674631dceae2">More...</a><br /></td></tr>
<tr class="separator:a82c4c0d7ba9873ecce7c674631dceae2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7940f1b2a7746c083a12a4e26077096b"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Get_char , class Get_length , class Compare &gt; </td></tr>
<tr class="memitem:a7940f1b2a7746c083a12a4e26077096b"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort.html#a7940f1b2a7746c083a12a4e26077096b">reverse_string_sort</a> (RandomAccessIter first, RandomAccessIter last, Get_char getchar, Get_length length, Compare comp)</td></tr>
<tr class="memitem:a7940f1b2a7746c083a12a4e26077096b"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort.html#a7940f1b2a7746c083a12a4e26077096b">reverse_string_sort</a> (RandomAccessIter first, RandomAccessIter last, Get_char get_character, Get_length length, Compare comp)</td></tr>
<tr class="memdesc:a7940f1b2a7746c083a12a4e26077096b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reverse String sort algorithm using random access iterators. <a href="#a7940f1b2a7746c083a12a4e26077096b">More...</a><br /></td></tr>
<tr class="separator:a7940f1b2a7746c083a12a4e26077096b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
@@ -883,7 +883,7 @@ template&lt;class RandomAccessIter , class Get_char , class Get_length , class C
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Get_char&#160;</td>
<td class="paramname"><em>getchar</em>, </td>
<td class="paramname"><em>get_character</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
@@ -932,7 +932,7 @@ Some performance plots of runtime vs. n and log(range) are provided:<br />
<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>
<tr><td class="paramdir">[in]</td><td class="paramname">comp</td><td>comparison functor. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">getchar</td><td>??? </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">get_character</td><td>??? </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>???</td></tr>
</table>
</dd>
@@ -1342,7 +1342,7 @@ template&lt;class RandomAccessIter , class Get_char , class Get_length &gt; </di
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Get_char&#160;</td>
<td class="paramname"><em>getchar</em>, </td>
<td class="paramname"><em>get_character</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
@@ -1383,7 +1383,7 @@ Some performance plots of runtime vs. n and log(range) are provided:<br />
<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>
<tr><td class="paramdir">[in]</td><td class="paramname">getchar</td><td>Number corresponding to the character offset from bracket functor equivalent to <code>operator</code>[]. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">get_character</td><td>Number corresponding to the character offset from bracket functor equivalent to <code>operator</code>[]. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>Functor to get the length of the string in characters.</td></tr>
</table>
</dd>
@@ -1442,7 +1442,7 @@ template&lt;class RandomAccessIter , class Get_char , class Get_length , class C
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Get_char&#160;</td>
<td class="paramname"><em>getchar</em>, </td>
<td class="paramname"><em>get_character</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
@@ -1491,7 +1491,7 @@ Some performance plots of runtime vs. n and log(range) are provided:<br />
<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>
<tr><td class="paramdir">[in]</td><td class="paramname">comp</td><td>comparison functor. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">getchar</td><td>??? </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">get_character</td><td>??? </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>???</td></tr>
</table>
</dd>

View File

@@ -193,7 +193,7 @@ Functions</h2></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">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">update_offset</a> (RandomAccessIter first, RandomAccessIter finish, size_t &amp;char_offset, Get_char getchar, Get_length length)</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">update_offset</a> (RandomAccessIter first, RandomAccessIter finish, size_t &amp;char_offset, Get_char get_character, 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">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>
@@ -202,13 +202,13 @@ Functions</h2></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">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">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="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">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 get_character, 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">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="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">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 get_character, 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">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="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">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 get_character, Get_length length, Compare comp)</td></tr>
<tr class="separator:ab71cd7c25eada649fa1aff16fb3549f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Enumeration Type Documentation</h2>
@@ -1348,7 +1348,7 @@ template&lt;class RandomAccessIter , class Unsigned_char_type , class Get_char ,
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Get_char&#160;</td>
<td class="paramname"><em>getchar</em>, </td>
<td class="paramname"><em>get_character</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
@@ -1566,7 +1566,7 @@ template&lt;class RandomAccessIter , class Unsigned_char_type , class Get_char ,
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Get_char&#160;</td>
<td class="paramname"><em>getchar</em>, </td>
<td class="paramname"><em>get_character</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
@@ -1638,7 +1638,7 @@ template&lt;class RandomAccessIter , class Unsigned_char_type , class Get_char ,
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Get_char&#160;</td>
<td class="paramname"><em>getchar</em>, </td>
<td class="paramname"><em>get_character</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
@@ -1740,7 +1740,7 @@ template&lt;class RandomAccessIter , class Get_char , class Get_length &gt; </di
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Get_char&#160;</td>
<td class="paramname"><em>getchar</em>, </td>
<td class="paramname"><em>get_character</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>

View File

@@ -2,7 +2,7 @@ var searchData=
[
['radix_5fthreshold',['radix_threshold',['../alrbreaker_8cpp.html#afc30457e398e72300f20714123913b78',1,'radix_threshold():&#160;alrbreaker.cpp'],['../binaryalrbreaker_8cpp.html#afc30457e398e72300f20714123913b78',1,'radix_threshold():&#160;binaryalrbreaker.cpp']]],
['randomgen_2ecpp',['randomgen.cpp',['../randomgen_8cpp.html',1,'']]],
['reverse_5fstring_5fsort',['reverse_string_sort',['../namespaceboost_1_1sort.html#a4ad4785d90f47d51ff1d2fac8c21bb48',1,'boost::sort::reverse_string_sort(RandomAccessIter first, RandomAccessIter last, Compare comp, Unsigned_char_type unused)'],['../namespaceboost_1_1sort.html#afd4938835fd03aab9c42bd0653e5dbe5',1,'boost::sort::reverse_string_sort(RandomAccessIter first, RandomAccessIter last, Compare comp)'],['../namespaceboost_1_1sort.html#a7940f1b2a7746c083a12a4e26077096b',1,'boost::sort::reverse_string_sort(RandomAccessIter first, RandomAccessIter last, Get_char getchar, Get_length length, Compare comp)']]],
['reverse_5fstring_5fsort',['reverse_string_sort',['../namespaceboost_1_1sort.html#a4ad4785d90f47d51ff1d2fac8c21bb48',1,'boost::sort::reverse_string_sort(RandomAccessIter first, RandomAccessIter last, Compare comp, Unsigned_char_type unused)'],['../namespaceboost_1_1sort.html#afd4938835fd03aab9c42bd0653e5dbe5',1,'boost::sort::reverse_string_sort(RandomAccessIter first, RandomAccessIter last, Compare comp)'],['../namespaceboost_1_1sort.html#a7940f1b2a7746c083a12a4e26077096b',1,'boost::sort::reverse_string_sort(RandomAccessIter first, RandomAccessIter last, Get_char get_character, Get_length length, Compare comp)']]],
['reverseintsample_2ecpp',['reverseintsample.cpp',['../reverseintsample_8cpp.html',1,'']]],
['reversestringfunctorsample_2ecpp',['reversestringfunctorsample.cpp',['../reversestringfunctorsample_8cpp.html',1,'']]],
['reversestringsample_2ecpp',['reversestringsample.cpp',['../reversestringsample_8cpp.html',1,'']]],

View File

@@ -6,7 +6,7 @@ var searchData=
['sort_5floop',['sort_loop',['../parallelint_8cpp.html#acbd0dadb301334e73befdafddd98b044',1,'parallelint.cpp']]],
['spreadsort',['spreadsort',['../namespaceboost_1_1sort.html#a4bc25fdacd4c948f631f08a3f9aa38eb',1,'boost::sort::spreadsort(RandomAccessIter first, RandomAccessIter last)'],['../namespaceboost_1_1sort.html#a94a736da091bd5d3b525818399f1b272',1,'boost::sort::spreadsort(RandomAccessIter first, RandomAccessIter last)'],['../namespaceboost_1_1sort.html#aafdea66d9b4a7faef5604b3079b525fa',1,'boost::sort::spreadsort(RandomAccessIter first, RandomAccessIter last)']]],
['spreadsort_2ehpp',['spreadsort.hpp',['../spreadsort_8hpp.html',1,'']]],
['string_5fsort',['string_sort',['../namespaceboost_1_1sort.html#a950a2dbbe75f048a0b343dbf7c532dc0',1,'boost::sort::string_sort(RandomAccessIter first, RandomAccessIter last, Unsigned_char_type unused)'],['../namespaceboost_1_1sort.html#a6acd5fc94521b0a5cb47dc491b6d862f',1,'boost::sort::string_sort(RandomAccessIter first, RandomAccessIter last)'],['../namespaceboost_1_1sort.html#a5143ec4f58cfe13eca2a0d6b6f6a6680',1,'boost::sort::string_sort(RandomAccessIter first, RandomAccessIter last, Get_char getchar, Get_length length)'],['../namespaceboost_1_1sort.html#a82c4c0d7ba9873ecce7c674631dceae2',1,'boost::sort::string_sort(RandomAccessIter first, RandomAccessIter last, Get_char getchar, Get_length length, Compare comp)']]],
['string_5fsort',['string_sort',['../namespaceboost_1_1sort.html#a950a2dbbe75f048a0b343dbf7c532dc0',1,'boost::sort::string_sort(RandomAccessIter first, RandomAccessIter last, Unsigned_char_type unused)'],['../namespaceboost_1_1sort.html#a6acd5fc94521b0a5cb47dc491b6d862f',1,'boost::sort::string_sort(RandomAccessIter first, RandomAccessIter last)'],['../namespaceboost_1_1sort.html#a5143ec4f58cfe13eca2a0d6b6f6a6680',1,'boost::sort::string_sort(RandomAccessIter first, RandomAccessIter last, Get_char get_character, Get_length length)'],['../namespaceboost_1_1sort.html#a82c4c0d7ba9873ecce7c674631dceae2',1,'boost::sort::string_sort(RandomAccessIter first, RandomAccessIter last, Get_char get_character, Get_length length, Compare comp)']]],
['string_5fsort_2ehpp',['string_sort.hpp',['../string__sort_8hpp.html',1,'']]],
['stringfunctorsample_2ecpp',['stringfunctorsample.cpp',['../stringfunctorsample_8cpp.html',1,'']]],
['stringsample_2ecpp',['stringsample.cpp',['../stringsample_8cpp.html',1,'']]]

View File

@@ -1,4 +1,4 @@
var searchData=
[
['reverse_5fstring_5fsort',['reverse_string_sort',['../namespaceboost_1_1sort.html#a4ad4785d90f47d51ff1d2fac8c21bb48',1,'boost::sort::reverse_string_sort(RandomAccessIter first, RandomAccessIter last, Compare comp, Unsigned_char_type unused)'],['../namespaceboost_1_1sort.html#afd4938835fd03aab9c42bd0653e5dbe5',1,'boost::sort::reverse_string_sort(RandomAccessIter first, RandomAccessIter last, Compare comp)'],['../namespaceboost_1_1sort.html#a7940f1b2a7746c083a12a4e26077096b',1,'boost::sort::reverse_string_sort(RandomAccessIter first, RandomAccessIter last, Get_char getchar, Get_length length, Compare comp)']]]
['reverse_5fstring_5fsort',['reverse_string_sort',['../namespaceboost_1_1sort.html#a4ad4785d90f47d51ff1d2fac8c21bb48',1,'boost::sort::reverse_string_sort(RandomAccessIter first, RandomAccessIter last, Compare comp, Unsigned_char_type unused)'],['../namespaceboost_1_1sort.html#afd4938835fd03aab9c42bd0653e5dbe5',1,'boost::sort::reverse_string_sort(RandomAccessIter first, RandomAccessIter last, Compare comp)'],['../namespaceboost_1_1sort.html#a7940f1b2a7746c083a12a4e26077096b',1,'boost::sort::reverse_string_sort(RandomAccessIter first, RandomAccessIter last, Get_char get_character, Get_length length, Compare comp)']]]
];

View File

@@ -2,5 +2,5 @@ var searchData=
[
['sort_5floop',['sort_loop',['../parallelint_8cpp.html#acbd0dadb301334e73befdafddd98b044',1,'parallelint.cpp']]],
['spreadsort',['spreadsort',['../namespaceboost_1_1sort.html#a4bc25fdacd4c948f631f08a3f9aa38eb',1,'boost::sort::spreadsort(RandomAccessIter first, RandomAccessIter last)'],['../namespaceboost_1_1sort.html#a94a736da091bd5d3b525818399f1b272',1,'boost::sort::spreadsort(RandomAccessIter first, RandomAccessIter last)'],['../namespaceboost_1_1sort.html#aafdea66d9b4a7faef5604b3079b525fa',1,'boost::sort::spreadsort(RandomAccessIter first, RandomAccessIter last)']]],
['string_5fsort',['string_sort',['../namespaceboost_1_1sort.html#a950a2dbbe75f048a0b343dbf7c532dc0',1,'boost::sort::string_sort(RandomAccessIter first, RandomAccessIter last, Unsigned_char_type unused)'],['../namespaceboost_1_1sort.html#a6acd5fc94521b0a5cb47dc491b6d862f',1,'boost::sort::string_sort(RandomAccessIter first, RandomAccessIter last)'],['../namespaceboost_1_1sort.html#a5143ec4f58cfe13eca2a0d6b6f6a6680',1,'boost::sort::string_sort(RandomAccessIter first, RandomAccessIter last, Get_char getchar, Get_length length)'],['../namespaceboost_1_1sort.html#a82c4c0d7ba9873ecce7c674631dceae2',1,'boost::sort::string_sort(RandomAccessIter first, RandomAccessIter last, Get_char getchar, Get_length length, Compare comp)']]]
['string_5fsort',['string_sort',['../namespaceboost_1_1sort.html#a950a2dbbe75f048a0b343dbf7c532dc0',1,'boost::sort::string_sort(RandomAccessIter first, RandomAccessIter last, Unsigned_char_type unused)'],['../namespaceboost_1_1sort.html#a6acd5fc94521b0a5cb47dc491b6d862f',1,'boost::sort::string_sort(RandomAccessIter first, RandomAccessIter last)'],['../namespaceboost_1_1sort.html#a5143ec4f58cfe13eca2a0d6b6f6a6680',1,'boost::sort::string_sort(RandomAccessIter first, RandomAccessIter last, Get_char get_character, Get_length length)'],['../namespaceboost_1_1sort.html#a82c4c0d7ba9873ecce7c674631dceae2',1,'boost::sort::string_sort(RandomAccessIter first, RandomAccessIter last, Get_char get_character, Get_length length, Compare comp)']]]
];

View File

@@ -1,6 +1,6 @@
var searchData=
[
['reverse_5fstring_5fsort',['reverse_string_sort',['../namespaceboost_1_1sort.html#a4ad4785d90f47d51ff1d2fac8c21bb48',1,'boost::sort::reverse_string_sort(RandomAccessIter first, RandomAccessIter last, Compare comp, Unsigned_char_type unused)'],['../namespaceboost_1_1sort.html#afd4938835fd03aab9c42bd0653e5dbe5',1,'boost::sort::reverse_string_sort(RandomAccessIter first, RandomAccessIter last, Compare comp)'],['../namespaceboost_1_1sort.html#a7940f1b2a7746c083a12a4e26077096b',1,'boost::sort::reverse_string_sort(RandomAccessIter first, RandomAccessIter last, Get_char getchar, Get_length length, Compare comp)']]],
['reverse_5fstring_5fsort_5frec',['reverse_string_sort_rec',['../namespaceboost_1_1sort_1_1detail.html#a66be693262defeff06a4a3507155d4a3',1,'boost::sort::detail::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)'],['../namespaceboost_1_1sort_1_1detail.html#ab71cd7c25eada649fa1aff16fb3549f6',1,'boost::sort::detail::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, Get_char getchar, Get_length length, Compare comp)']]],
['reverse_5fstring_5fsort',['reverse_string_sort',['../namespaceboost_1_1sort.html#a4ad4785d90f47d51ff1d2fac8c21bb48',1,'boost::sort::reverse_string_sort(RandomAccessIter first, RandomAccessIter last, Compare comp, Unsigned_char_type unused)'],['../namespaceboost_1_1sort.html#afd4938835fd03aab9c42bd0653e5dbe5',1,'boost::sort::reverse_string_sort(RandomAccessIter first, RandomAccessIter last, Compare comp)'],['../namespaceboost_1_1sort.html#a7940f1b2a7746c083a12a4e26077096b',1,'boost::sort::reverse_string_sort(RandomAccessIter first, RandomAccessIter last, Get_char get_character, Get_length length, Compare comp)']]],
['reverse_5fstring_5fsort_5frec',['reverse_string_sort_rec',['../namespaceboost_1_1sort_1_1detail.html#a66be693262defeff06a4a3507155d4a3',1,'boost::sort::detail::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)'],['../namespaceboost_1_1sort_1_1detail.html#ab71cd7c25eada649fa1aff16fb3549f6',1,'boost::sort::detail::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, Get_char get_character, Get_length length, Compare comp)']]],
['rough_5flog_5f2_5fsize',['rough_log_2_size',['../namespaceboost_1_1sort_1_1detail.html#a852a51cde62aa67347cb9b4a7350bbac',1,'boost::sort::detail']]]
];

View File

@@ -2,6 +2,6 @@ var searchData=
[
['size_5fbins',['size_bins',['../namespaceboost_1_1sort_1_1detail.html#ad5b7d31fba809eae5d17f5c2fb0a385b',1,'boost::sort::detail']]],
['spreadsort',['spreadsort',['../namespaceboost_1_1sort.html#a4bc25fdacd4c948f631f08a3f9aa38eb',1,'boost::sort::spreadsort(RandomAccessIter first, RandomAccessIter last)'],['../namespaceboost_1_1sort.html#a94a736da091bd5d3b525818399f1b272',1,'boost::sort::spreadsort(RandomAccessIter first, RandomAccessIter last)'],['../namespaceboost_1_1sort.html#aafdea66d9b4a7faef5604b3079b525fa',1,'boost::sort::spreadsort(RandomAccessIter first, RandomAccessIter last)']]],
['string_5fsort',['string_sort',['../namespaceboost_1_1sort.html#a950a2dbbe75f048a0b343dbf7c532dc0',1,'boost::sort::string_sort(RandomAccessIter first, RandomAccessIter last, Unsigned_char_type unused)'],['../namespaceboost_1_1sort.html#a6acd5fc94521b0a5cb47dc491b6d862f',1,'boost::sort::string_sort(RandomAccessIter first, RandomAccessIter last)'],['../namespaceboost_1_1sort.html#a5143ec4f58cfe13eca2a0d6b6f6a6680',1,'boost::sort::string_sort(RandomAccessIter first, RandomAccessIter last, Get_char getchar, Get_length length)'],['../namespaceboost_1_1sort.html#a82c4c0d7ba9873ecce7c674631dceae2',1,'boost::sort::string_sort(RandomAccessIter first, RandomAccessIter last, Get_char getchar, Get_length length, Compare comp)']]],
['string_5fsort_5frec',['string_sort_rec',['../namespaceboost_1_1sort_1_1detail.html#ad1655ab39e410e18b6e8b6694405e5ba',1,'boost::sort::detail::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)'],['../namespaceboost_1_1sort_1_1detail.html#af825e4484173e0b886d0b24f66ae4a64',1,'boost::sort::detail::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, Get_char getchar, Get_length length)'],['../namespaceboost_1_1sort_1_1detail.html#a49ccfc022cfef8a14bbbbeccd36d78ec',1,'boost::sort::detail::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, Get_char getchar, Get_length length, Compare comp)']]]
['string_5fsort',['string_sort',['../namespaceboost_1_1sort.html#a950a2dbbe75f048a0b343dbf7c532dc0',1,'boost::sort::string_sort(RandomAccessIter first, RandomAccessIter last, Unsigned_char_type unused)'],['../namespaceboost_1_1sort.html#a6acd5fc94521b0a5cb47dc491b6d862f',1,'boost::sort::string_sort(RandomAccessIter first, RandomAccessIter last)'],['../namespaceboost_1_1sort.html#a5143ec4f58cfe13eca2a0d6b6f6a6680',1,'boost::sort::string_sort(RandomAccessIter first, RandomAccessIter last, Get_char get_character, Get_length length)'],['../namespaceboost_1_1sort.html#a82c4c0d7ba9873ecce7c674631dceae2',1,'boost::sort::string_sort(RandomAccessIter first, RandomAccessIter last, Get_char get_character, Get_length length, Compare comp)']]],
['string_5fsort_5frec',['string_sort_rec',['../namespaceboost_1_1sort_1_1detail.html#ad1655ab39e410e18b6e8b6694405e5ba',1,'boost::sort::detail::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)'],['../namespaceboost_1_1sort_1_1detail.html#af825e4484173e0b886d0b24f66ae4a64',1,'boost::sort::detail::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, Get_char get_character, Get_length length)'],['../namespaceboost_1_1sort_1_1detail.html#a49ccfc022cfef8a14bbbbeccd36d78ec',1,'boost::sort::detail::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, Get_char get_character, Get_length length, Compare comp)']]]
];

View File

@@ -1,4 +1,4 @@
var searchData=
[
['update_5foffset',['update_offset',['../namespaceboost_1_1sort_1_1detail.html#a585497946eeb8cc1d2072642d7f1da01',1,'boost::sort::detail::update_offset(RandomAccessIter first, RandomAccessIter finish, size_t &amp;char_offset)'],['../namespaceboost_1_1sort_1_1detail.html#a415ebdb0c9a5e9209bbfc7d2e576374c',1,'boost::sort::detail::update_offset(RandomAccessIter first, RandomAccessIter finish, size_t &amp;char_offset, Get_char getchar, Get_length length)']]]
['update_5foffset',['update_offset',['../namespaceboost_1_1sort_1_1detail.html#a585497946eeb8cc1d2072642d7f1da01',1,'boost::sort::detail::update_offset(RandomAccessIter first, RandomAccessIter finish, size_t &amp;char_offset)'],['../namespaceboost_1_1sort_1_1detail.html#a415ebdb0c9a5e9209bbfc7d2e576374c',1,'boost::sort::detail::update_offset(RandomAccessIter first, RandomAccessIter finish, size_t &amp;char_offset, Get_char get_character, Get_length length)']]]
];

View File

@@ -129,15 +129,15 @@ Functions</h2></td></tr>
<tr class="memdesc:afd4938835fd03aab9c42bd0653e5dbe5"><td class="mdescLeft">&#160;</td><td class="mdescRight">String sort algorithm using random access iterators, wraps using default of <code>unsigned</code> char. <a href="#afd4938835fd03aab9c42bd0653e5dbe5">More...</a><br /></td></tr>
<tr class="separator:afd4938835fd03aab9c42bd0653e5dbe5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5143ec4f58cfe13eca2a0d6b6f6a6680"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Get_char , class Get_length &gt; </td></tr>
<tr class="memitem:a5143ec4f58cfe13eca2a0d6b6f6a6680"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort.html#a5143ec4f58cfe13eca2a0d6b6f6a6680">boost::sort::string_sort</a> (RandomAccessIter first, RandomAccessIter last, Get_char getchar, Get_length length)</td></tr>
<tr class="memitem:a5143ec4f58cfe13eca2a0d6b6f6a6680"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort.html#a5143ec4f58cfe13eca2a0d6b6f6a6680">boost::sort::string_sort</a> (RandomAccessIter first, RandomAccessIter last, Get_char get_character, Get_length length)</td></tr>
<tr class="memdesc:a5143ec4f58cfe13eca2a0d6b6f6a6680"><td class="mdescLeft">&#160;</td><td class="mdescRight">String sort algorithm using random access iterators, wraps using default of <code>unsigned</code> char. <a href="#a5143ec4f58cfe13eca2a0d6b6f6a6680">More...</a><br /></td></tr>
<tr class="separator:a5143ec4f58cfe13eca2a0d6b6f6a6680"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a82c4c0d7ba9873ecce7c674631dceae2"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Get_char , class Get_length , class Compare &gt; </td></tr>
<tr class="memitem:a82c4c0d7ba9873ecce7c674631dceae2"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort.html#a82c4c0d7ba9873ecce7c674631dceae2">boost::sort::string_sort</a> (RandomAccessIter first, RandomAccessIter last, Get_char getchar, Get_length length, Compare comp)</td></tr>
<tr class="memitem:a82c4c0d7ba9873ecce7c674631dceae2"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort.html#a82c4c0d7ba9873ecce7c674631dceae2">boost::sort::string_sort</a> (RandomAccessIter first, RandomAccessIter last, Get_char get_character, Get_length length, Compare comp)</td></tr>
<tr class="memdesc:a82c4c0d7ba9873ecce7c674631dceae2"><td class="mdescLeft">&#160;</td><td class="mdescRight">String sort algorithm using random access iterators, wraps using default of <code>unsigned</code> char. <a href="#a82c4c0d7ba9873ecce7c674631dceae2">More...</a><br /></td></tr>
<tr class="separator:a82c4c0d7ba9873ecce7c674631dceae2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7940f1b2a7746c083a12a4e26077096b"><td class="memTemplParams" colspan="2">template&lt;class RandomAccessIter , class Get_char , class Get_length , class Compare &gt; </td></tr>
<tr class="memitem:a7940f1b2a7746c083a12a4e26077096b"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort.html#a7940f1b2a7746c083a12a4e26077096b">boost::sort::reverse_string_sort</a> (RandomAccessIter first, RandomAccessIter last, Get_char getchar, Get_length length, Compare comp)</td></tr>
<tr class="memitem:a7940f1b2a7746c083a12a4e26077096b"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceboost_1_1sort.html#a7940f1b2a7746c083a12a4e26077096b">boost::sort::reverse_string_sort</a> (RandomAccessIter first, RandomAccessIter last, Get_char get_character, Get_length length, Compare comp)</td></tr>
<tr class="memdesc:a7940f1b2a7746c083a12a4e26077096b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reverse String sort algorithm using random access iterators. <a href="#a7940f1b2a7746c083a12a4e26077096b">More...</a><br /></td></tr>
<tr class="separator:a7940f1b2a7746c083a12a4e26077096b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>

View File

@@ -361,7 +361,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="comment"> \param[in] first Iterator pointer to first element.</span></div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="comment"> \param[in] last Iterator pointing to one beyond the end of data.</span></div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<span class="comment"> \param[in] getchar Number corresponding to the character offset from bracket functor equivalent to @c operator[].</span></div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<span class="comment"> \param[in] get_character Number corresponding to the character offset from bracket functor equivalent to @c operator[].</span></div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="comment"> \param[in] length Functor to get the length of the string in characters.</span></div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="comment"> \pre [@c first, @c last) is a valid range.</span></div>
@@ -390,7 +390,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</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="l00301"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort.html#a5143ec4f58cfe13eca2a0d6b6f6a6680"> 301</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1sort.html#a950a2dbbe75f048a0b343dbf7c532dc0">string_sort</a>(RandomAccessIter first, RandomAccessIter last,</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; Get_char getchar, Get_length length)</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; Get_char get_character, Get_length length)</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; <span class="comment">//Don&#39;t sort if it&#39;s too small to optimize</span></div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">if</span> (last - first &lt; detail::min_sort_size)</div>
@@ -402,7 +402,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">if</span> (++first == last)</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; }</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="namespaceboost_1_1sort.html#a82c4c0d7ba9873ecce7c674631dceae2">detail::string_sort</a>(first, last, getchar, length, getchar((*first), 0));</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="namespaceboost_1_1sort.html#a82c4c0d7ba9873ecce7c674631dceae2">detail::string_sort</a>(first, last, get_character, length, get_character((*first), 0));</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;</div>
@@ -434,7 +434,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;<span class="comment"> \param[in] first Iterator pointer to first element.</span></div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;<span class="comment"> \param[in] last Iterator pointing to one beyond the end of data.</span></div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;<span class="comment"> \param[in] comp comparison functor.</span></div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;<span class="comment"> \param[in] getchar ???</span></div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;<span class="comment"> \param[in] get_character ???</span></div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;<span class="comment"> \param[in] length ???</span></div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;<span class="comment"></span></div>
@@ -463,7 +463,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00372"></a><span class="lineno"> 372</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="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keyword">class </span>Compare&gt;</div>
<div class="line"><a name="l00374"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort.html#a82c4c0d7ba9873ecce7c674631dceae2"> 374</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1sort.html#a950a2dbbe75f048a0b343dbf7c532dc0">string_sort</a>(RandomAccessIter first, RandomAccessIter last,</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; Get_char getchar, Get_length length, Compare comp)</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; Get_char get_character, Get_length length, Compare comp)</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; {</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="comment">//Don&#39;t sort if it&#39;s too small to optimize</span></div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">if</span> (last - first &lt; detail::min_sort_size)</div>
@@ -475,8 +475,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keywordflow">if</span> (++first == last)</div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; }</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <a class="code" href="namespaceboost_1_1sort.html#a82c4c0d7ba9873ecce7c674631dceae2">detail::string_sort</a>(first, last, getchar, length, comp,</div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; getchar((*first), 0));</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <a class="code" href="namespaceboost_1_1sort.html#a82c4c0d7ba9873ecce7c674631dceae2">detail::string_sort</a>(first, last, get_character, length, comp,</div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; get_character((*first), 0));</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; }</div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; }</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;</div>
@@ -507,7 +507,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;<span class="comment"> \param[in] first Iterator pointer to first element.</span></div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;<span class="comment"> \param[in] last Iterator pointing to one beyond the end of data.</span></div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;<span class="comment"> \param[in] comp comparison functor.</span></div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;<span class="comment"> \param[in] getchar ???</span></div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;<span class="comment"> \param[in] get_character ???</span></div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;<span class="comment"> \param[in] length ???</span></div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;<span class="comment"></span></div>
@@ -536,7 +536,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00445"></a><span class="lineno"> 445</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="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keyword">class </span>Compare&gt;</div>
<div class="line"><a name="l00447"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort.html#a7940f1b2a7746c083a12a4e26077096b"> 447</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceboost_1_1sort.html#a4ad4785d90f47d51ff1d2fac8c21bb48">reverse_string_sort</a>(RandomAccessIter first,</div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; RandomAccessIter last, Get_char getchar, Get_length length, Compare comp)</div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; RandomAccessIter last, Get_char get_character, Get_length length, Compare comp)</div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; {</div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="comment">//Don&#39;t sort if it&#39;s too small to optimize</span></div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">if</span> (last - first &lt; detail::min_sort_size)</div>
@@ -550,8 +550,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; }</div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="comment">//making last just after the end of the non-empty part of the array</span></div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <a class="code" href="namespaceboost_1_1sort.html#a7940f1b2a7746c083a12a4e26077096b">detail::reverse_string_sort</a>(first, last + 1, getchar, length, comp,</div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; getchar((*last), 0));</div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <a class="code" href="namespaceboost_1_1sort.html#a7940f1b2a7746c083a12a4e26077096b">detail::reverse_string_sort</a>(first, last + 1, get_character, length, comp,</div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; get_character((*last), 0));</div>
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; }</div>
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; }</div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;}</div>
@@ -559,10 +559,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;</div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</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_a82c4c0d7ba9873ecce7c674631dceae2"><div class="ttname"><a href="namespaceboost_1_1sort.html#a82c4c0d7ba9873ecce7c674631dceae2">boost::sort::string_sort</a></div><div class="ttdeci">void string_sort(RandomAccessIter first, RandomAccessIter last, Get_char getchar, Get_length length, Compare comp)</div><div class="ttdoc">String sort algorithm using random access iterators, wraps using default of unsigned char...</div><div class="ttdef"><b>Definition:</b> string_sort.hpp:374</div></div>
<div class="ttc" id="namespaceboost_1_1sort_html_a82c4c0d7ba9873ecce7c674631dceae2"><div class="ttname"><a href="namespaceboost_1_1sort.html#a82c4c0d7ba9873ecce7c674631dceae2">boost::sort::string_sort</a></div><div class="ttdeci">void string_sort(RandomAccessIter first, RandomAccessIter last, Get_char get_character, Get_length length, Compare comp)</div><div class="ttdoc">String sort algorithm using random access iterators, wraps using default of unsigned char...</div><div class="ttdef"><b>Definition:</b> string_sort.hpp:374</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="ttdoc">String sort algorithm using random access iterators, allowing character-type overloads. (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> string_sort.hpp:73</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="ttdoc">String sort algorithm using random access iterators, allowing character-type overloads. </div><div class="ttdef"><b>Definition:</b> string_sort.hpp:183</div></div>
<div class="ttc" id="namespaceboost_1_1sort_html_a7940f1b2a7746c083a12a4e26077096b"><div class="ttname"><a href="namespaceboost_1_1sort.html#a7940f1b2a7746c083a12a4e26077096b">boost::sort::reverse_string_sort</a></div><div class="ttdeci">void reverse_string_sort(RandomAccessIter first, RandomAccessIter last, Get_char getchar, Get_length length, Compare comp)</div><div class="ttdoc">Reverse String sort algorithm using random access iterators. </div><div class="ttdef"><b>Definition:</b> string_sort.hpp:447</div></div>
<div class="ttc" id="namespaceboost_1_1sort_html_a7940f1b2a7746c083a12a4e26077096b"><div class="ttname"><a href="namespaceboost_1_1sort.html#a7940f1b2a7746c083a12a4e26077096b">boost::sort::reverse_string_sort</a></div><div class="ttdeci">void reverse_string_sort(RandomAccessIter first, RandomAccessIter last, Get_char get_character, Get_length length, Compare comp)</div><div class="ttdoc">Reverse String sort algorithm using random access iterators. </div><div class="ttdef"><b>Definition:</b> string_sort.hpp:447</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>

View File

@@ -94,7 +94,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
<p>This is the complete list of members for <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>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#ae5ee4abf81ecfb4ff4016792b81bfbd2">fchar_offset</a></td><td class="entry"><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><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#afb5424173c237d8cd25722a02c23ab30">getchar</a></td><td class="entry"><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><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#afb5424173c237d8cd25722a02c23ab30">get_character</a></td><td class="entry"><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><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#a8ff12c3dcf4a6ea9942b8fc1e5046936">length</a></td><td class="entry"><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><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#a0716b085964e676c8c9735bafa783007">offset_char_less_than</a>(size_t char_offset)</td><td class="entry"><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><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#ad20c3572610e68d76c49dfff2eba2bf3">operator()</a>(const Data_type &amp;x, const Data_type &amp;y) const </td><td class="entry"><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><td class="entry"><span class="mlabel">inline</span></td></tr>

View File

@@ -108,7 +108,7 @@ Public Member Functions</h2></td></tr>
Public Attributes</h2></td></tr>
<tr class="memitem:ae5ee4abf81ecfb4ff4016792b81bfbd2"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#ae5ee4abf81ecfb4ff4016792b81bfbd2">fchar_offset</a></td></tr>
<tr class="separator:ae5ee4abf81ecfb4ff4016792b81bfbd2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb5424173c237d8cd25722a02c23ab30"><td class="memItemLeft" align="right" valign="top">Get_char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#afb5424173c237d8cd25722a02c23ab30">getchar</a></td></tr>
<tr class="memitem:afb5424173c237d8cd25722a02c23ab30"><td class="memItemLeft" align="right" valign="top">Get_char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#afb5424173c237d8cd25722a02c23ab30">get_character</a></td></tr>
<tr class="separator:afb5424173c237d8cd25722a02c23ab30"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8ff12c3dcf4a6ea9942b8fc1e5046936"><td class="memItemLeft" align="right" valign="top">Get_length&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html#a8ff12c3dcf4a6ea9942b8fc1e5046936">length</a></td></tr>
<tr class="separator:a8ff12c3dcf4a6ea9942b8fc1e5046936"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -199,7 +199,7 @@ template&lt;class Data_type , class Get_char , class Get_length &gt; </div>
template&lt;class Data_type , class Get_char , class Get_length &gt; </div>
<table class="memname">
<tr>
<td class="memname">Get_char <a class="el" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html">boost::sort::detail::offset_char_less_than</a>&lt; Data_type, Get_char, Get_length &gt;::getchar</td>
<td class="memname">Get_char <a class="el" href="structboost_1_1sort_1_1detail_1_1offset__char__less__than.html">boost::sort::detail::offset_char_less_than</a>&lt; Data_type, Get_char, Get_length &gt;::get_character</td>
</tr>
</table>
</div><div class="memdoc">

View File

@@ -14,11 +14,11 @@
[:
[*Flat_stable_sort] is a new stable sort algorithm, designed and implemented by Francisco Jose Tapia for the Boost Sort Library
The goal of the algorithm is provide a stable sort with a low additional memory (about 1% of the memory used by the data).
The goal of the algorithm is to stably sort with little additional memory (about 1% of the memory used by the data).
The stable sort algorithms provided by the compilers and libraries use substantial additional memory, usually half of the data to sort.
The default stable sort algorithms provided by most compilers and libraries use substantial additional memory, usually half of the data to sort.
This new algorithm provide around 80%-90% of the speed of the spinsort and the stable sort algorithms provided by compilers and libraries.
This new algorithm provides around 80%-90% of the speed of the spinsort and the stable sort algorithms provided by compilers and libraries.
This algorithm is fast when the data is almost sorted. Many times the new elements are inserted at the end of the sorted elements,
or some elements are modified, breaking the order of the elements. In these cases, the flat_stable_sort algorithm is very fast.
@@ -110,11 +110,11 @@ The flat_stable_sort function is in the namespace boost::sort.
void flat_stable_sort (iter_t first, iter_t last, compare comp = compare());
``
The algorithms use a [*comparison object], in the same way as the standard library sort
This algorithm uses a [*comparison object], in the same way as the standard library sort
algorithms. If you don't define it, the comparison object defaults to std::less, which uses
the < operator internally for comparisons.
The algorithms are [*exception safe], meaning that, the exceptions generated by the algorithms
This algorithm is [*exception safe], meaning that, the exceptions generated by the algorithm
guarantee the integrity of the objects to sort, but not their relative order. If the exception
is generated inside the objects (in the move or copy constructors) the results are undefined.

View File

@@ -10,9 +10,9 @@
[section:introduction 1.- Introduction]
[:
The goal of the Boost Sort Library is provide to the users, the most modern and fast sorting algorithms.
The goal of the Boost Sort Library is provide to the users, the most modern, fast, and memory-efficient sorting algorithms.
This library provide stable and not stable sorting algorithms, in single thread and parallel versions.
This library provides stable and unstable sorting algorithms, in single threaded and parallel versions.
These algorithms do not use any other library or utility. The parallel algorithms need a C++11 compliant compiler.
@@ -24,23 +24,22 @@ These algorithms do not use any other library or utility. The parallel algorithm
| | | | Comparison |
Algorithm |Stable | Additional memory |Best, average, and worst case | method |
------------------+-------+----------------------------+------------------------------+---------------------+
spreadsort | no | Log N | N, N LogN , N LogN | Hybrid radix sort |
pdqsort | no | Log N | N, N LogN , N LogN | Comparison operator |
spinsort | yes | N / 2 | N, N LogN , N LogN | Comparison operator |
flat_stable_sort | yes |size of the data / 256 + 8K | N, N LogN , N LogN | Comparison operator |
spreadsort | no | key_length | N, N sqrt(LogN), min(N logN, N key_length) | Hybrid radix sort |
pdqsort | no | Log N | N, N LogN, N LogN | Comparison operator |
spinsort | yes | N / 2 | N, N LogN, N LogN | Comparison operator |
flat_stable_sort | yes |size of the data / 256 + 8K | N, N LogN, N LogN | Comparison operator |
| | | | |
``
]
* *spreadsort* is a hybrid radix sort algorithm, extremely fast, designed and developed by Steven Ross.
* *spreadsort* is an extremely fast hybrid radix sort algorithm, designed and developed by Steven Ross.
* *pdqsort* is a improvement of the quick sort algorithm, designed and developed by Orson Peters.
* *spinsort* is a stable sort, fast with random and whith near sorted data, designed and developed by Francisco Tapia.
* *flat_stable_sort* stable sort with a small additional memory (around 1% of the size of the data),provide the 80% - 90% of the speed of
spinsort, being fast with random and with near sorted data, designed and developed by Francisco Tapia.
* *spinsort* is a stable sort that is fast with random or nearly sorted data, designed and developed by Francisco Tapia.
* *flat_stable_sort* is a stable sort that uses very little additional memory (around 1% of the size of the data), providing 80% - 90% of the speed of
spinsort, designed and developed by Francisco Tapia.
[h4[_Parallel Algorithms]]
@@ -61,7 +60,7 @@ These algorithms do not use any other library or utility. The parallel algorithm
* *Parallel_stable_sort* is based on the samplesort algorithm, but using a half of the memory used by sample_sort, conceived and implemented by Francisco Tapia.
* *Block_indirect_sort* is a novel parallel sort algorithm, very fast, with low additional memory consumption, conceived and implemented by Francisco Tapia.
* *Block_indirect_sort* is a novel high-speed parallel sort algorithm with low additional memory consumption, conceived and implemented by Francisco Tapia.
The *block_size* is an internal parameter of the algorithm, which in order to achieve the

View File

@@ -9,7 +9,7 @@
[section:linux_parallel 3.4- Linux Benchmarks]
[:
The following results are from more complex benchmarks, not include in the library because they use non free software.
The following results are from complex benchmarks, not include in the library because they use non free software.
(If you are interested in them, contact fjtapia@gmail.com)
There are 3 types of benchmarks,

View File

@@ -57,8 +57,8 @@ The benchmarks with strings and objects of different sizes are not showed here,
``
]
The next results are obtained from more complex benchmarks, not include in the library because use non free SW
(If you are interested in their code, contact with fjtapia@gmail.com)
The next results are obtained from more complex benchmarks, not include in the library because they use non free software
(If you are interested in their code, contact fjtapia@gmail.com)
There are 3 types of benchmarks,
[:

View File

@@ -65,7 +65,7 @@ than the number of hardware threads on the machine. We can pass 100 threads in a
[h4[_Programming]]
[:
Only need to include the file boost/sort/sort.hpp to use these algorithms.
You only need to include the file boost/sort/sort.hpp to use these algorithms.
All the algorithms run in the namespace boost::sort
@@ -84,7 +84,7 @@ The parallel algorithms have 4 invocation formats:
algorithm ( first iterator, last iterator, number of threads )
algorithm ( first iterator, last iterator )
``
These algorithms need a *C++11 compliant compiler*. Don't need any other code or library. With older compilers it is not guarantee, the correct operation.
These algorithms need a *C++11 compliant compiler*, but don't need any other code or library. With older compilers correct operation isn't guaranteed.
If the number of threads is unspecified, use the result of std::thread::hardware_concurrency()

View File

@@ -12,7 +12,7 @@
[:
This algorithm is based on the [*[@ https://en.wikipedia.org/wiki/Samplesort Samplesort]] algorithm, but uses half of the memory used by samplesort.
The design and implementation are done by Francisco Tapia for the Boost Library.
The design and implementation were done by Francisco Tapia for the Boost Library.
[h4[_Algorithm Description]]
[:
@@ -32,7 +32,7 @@ You can see their performance in the [*[link sort.parallel.linux_parallel Benchm
[h4[_Thread specification]]
[:
This algorithm have a integer parameter indicating the *number of thread* to use in the sorting process,
This algorithm has an integer parameter indicating the *number of threads* to use in the sorting process,
which always is the last value in the call.
The default value (if left unspecified) is the number of HW threads of
@@ -49,9 +49,9 @@ If this value is 0, the program is executed with 1 thread.
[h4[_Programming]]
[:
Only need to include the file boost/sort/sort.hpp.
You only need to include the file boost/sort/sort.hpp to use this code.
The algorithm run in the namespace boost::sort
This algorithm run in the namespace boost::sort.
[c++]
``
@@ -72,18 +72,19 @@ The algorithm run in the namespace boost::sort
``
This algorithm need a *C++11 compliant compiler*. Don't need any other code or library. With older compilers it is not guarantee, the correct operation.
This algorithm needs a *C++11 compliant compiler*, and doesn't need any other code or library. Correct operation is not guaranteed with older compilers.
If the number of threads is unspecified, use the result of std::thread::hardware_concurrency()
If the number of threads is unspecified, this uses the result of std::thread::hardware_concurrency().
The algorithm use a *comparison object*, in the same way as the standard library sort
algorithms. If don't define, the comparison object is std::less, which uses internally
the < operator.
This algorithm uses a *comparison object*, in the same way as the standard library sort
algorithms. If not defined, the comparison object is std::less, which uses
the < operator internally.
The algorithm is [*exception safe], meaning that, the exceptions generated by the algorithm
This algorithm is [*exception safe], meaning that, the exceptions generated by the algorithm
guarantee the integrity of the objects to sort, but not their relative order. If the exception
is generated inside the objects (in the move or in the copy constructor.. ) the results can be
unpredictable.
]
]

View File

@@ -32,7 +32,7 @@ You can see their performance in the [*[link sort.parallel.linux_parallel Benchm
[h4[_Thread specification]]
[:
This algorithm have a integer parameter indicating the *number of thread* to use in the sorting process,
This algorithm has an integer parameter indicating the *number of threads* to use in the sorting process,
which always is the last value in the call. The default value (if left unspecified) is the number of HW threads of
the machine where the program is running provided by std::thread::hardware_concurrency().
@@ -47,7 +47,7 @@ If this value is 0, the program is executed with 1 thread.
[h4[_Programming]]
[:
Only need to include the file boost/sort/sort.hpp.
You only need to include the file boost/sort/sort.hpp.
The algorithm run in the namespace boost::sort
@@ -70,15 +70,15 @@ The algorithm run in the namespace boost::sort
``
This algorithm need a *C++11 compliant compiler*. Don't need any other code or library. With older compilers it is not guarantee, the correct operation.
This algorithm needs a *C++11 compliant compiler*, and doesn't need any other code or library. Correct operation is not guaranteed with older compilers.
If the number of threads is unspecified, use the result of std::thread::hardware_concurrency()
If the number of threads is unspecified, this uses the result of std::thread::hardware_concurrency().
The algorithm use a *comparison object*, in the same way as the standard library sort
algorithms. If don't define, the comparison object is std::less, which uses internally
the < operator.
This algorithm uses a *comparison object*, in the same way as the standard library sort
algorithms. If not defined, the comparison object is std::less, which uses
the < operator internally.
The algorithm is [*exception safe], meaning that, the exceptions generated by the algorithm
This algorithm is [*exception safe], meaning that, the exceptions generated by the algorithm
guarantee the integrity of the objects to sort, but not their relative order. If the exception
is generated inside the objects (in the move or in the copy constructor.. ) the results can be
unpredictable.

View File

@@ -21,22 +21,22 @@ This table provides a brief description of the single thread algorithms of the l
| | | | Comparison |
Algorithm |Stable | Additional memory |Best, average, and worst case | method |
------------------+-------+----------------------------+------------------------------+---------------------+
spreadsort | no | Log N | N, N LogN , N LogN | Hybrid radix sort |
pdqsort | no | Log N | N, N LogN , N LogN | Comparison operator |
spinsort | yes | N / 2 | N, N LogN , N LogN | Comparison operator |
flat_stable_sort | yes |size of the data / 256 + 8K | N, N LogN , N LogN | Comparison operator |
spreadsort | no | key_length | N, N sqrt(LogN), min(N logN, N key_length) | Hybrid radix sort |
pdqsort | no | Log N | N, N LogN, N LogN | Comparison operator |
spinsort | yes | N / 2 | N, N LogN, N LogN | Comparison operator |
flat_stable_sort | yes |size of the data / 256 + 8K | N, N LogN, N LogN | Comparison operator |
| | | | |
``
]
* *spreadsort* is a hybrid radix sort algorithm, extremely fast, designed and developed by Steven Ross.
* *spreadsort* is an extremely fast hybrid radix sort algorithm, designed and developed by Steven Ross.
* *pdqsort* is a improvement of the quick sort algorithm, designed and developed by Orson Peters.
* *spinsort* is a stable sort, fast with random and whith near sorted data, designed and developed by Francisco Tapia.
* *spinsort* is a stable sort that is fast with random or nearly sorted data, designed and developed by Francisco Tapia.
* *flat_stable_sort* stable sort with a small additional memory (around 1% of the size of the data),provide the 80% - 90% of the speed of
spinsort, being fast with random and with near sorted data, designed and developed by Francisco Tapia.
* *flat_stable_sort* is a stable sort that uses very little additional memory (around 1% of the size of the data), providing 80% - 90% of the speed of
spinsort, designed and developed by Francisco Tapia.
]

View File

@@ -15,7 +15,7 @@
[:
[*Spinsort] is a new stable sort algorithm, designed and implemented by Francisco Tapia for the Boost Sort Library.
It is a merge algorithm which combines several ideas in order to improve the speed of other stable sort algorithms.
This algorithm combines several ideas used to optimize other stable sort algorithms.
[*[teletype]
@@ -87,11 +87,11 @@ The spinsort function is in the namespace boost::sort
``
The algorithms use a [*comparison object], in the same way as the standard library sort
This algorithm uses a [*comparison object], in the same way as the standard library sort
algorithms. If you don't define it, the comparison object defaults to std::less, which uses
the < operator internally for comparisons.
The algorithms are [*exception safe], meaning that, the exceptions generated by the algorithms
This algorithm is [*exception safe], meaning that, the exceptions generated by the algorithm
guarantee the integrity of the objects to sort, but not their relative order. If the exception
is generated inside the objects (in the move or copy constructors) the results are undefined.
]

View File

@@ -911,4 +911,6 @@ Parallel and Distributed Processing Techniques and Applications, Volume 3, pp.11
[endsect] [/section:history]
[xinclude autodoc.xml] [/ Using Doxygen reference documentation.]
[xinclude autodoc.xml] [/ Using Doxygen reference documentation.]
[endsect] [/section:spreadsort]

View File

@@ -11,7 +11,7 @@
[:
These results are obtained from more complex benchmarks, not included in the library because they use non free software.
These results are obtained from complex benchmarks, not included in the library because they use non free software.
(If you are interested in the details, contact fjtapia@gmail.com)
There are 3 types of benchmarks,

View File

@@ -66,8 +66,8 @@ There are 3 types of benchmarks,
*objects of several sizes.
The objects are arrays of integers. With the heavy comparison sum all the elements in each, in the light comparison
use only the first number of the array.
The objects are arrays of integers. The heavy comparison sums all the elements in each, and the light comparison uses only the first number of the array.
]
[h4[_100 000 000 NUMBERS OF 64 BITS RANDOMLY FILLED]]

View File

@@ -79,7 +79,7 @@ namespace spreadsort {
template<class RandomAccessIter, class Get_char, class Get_length>
inline void
update_offset(RandomAccessIter first, RandomAccessIter finish,
size_t &char_offset, Get_char getchar, Get_length length)
size_t &char_offset, Get_char get_character, Get_length length)
{
size_t nextOffset = char_offset;
while (true) {
@@ -88,7 +88,7 @@ namespace spreadsort {
//ignore empties, but if the nextOffset would exceed the length or
//not match, exit; we've found the last matching character
if (length(*curr) > char_offset && (length(*curr) <= (nextOffset + 1)
|| getchar((*curr), nextOffset) != getchar((*first), nextOffset))) {
|| get_character((*curr), nextOffset) != get_character((*first), nextOffset))) {
char_offset = nextOffset;
return;
}
@@ -145,14 +145,14 @@ namespace spreadsort {
{
size_t minSize = (std::min)(length(x), length(y));
for (size_t u = fchar_offset; u < minSize; ++u) {
if (getchar(x, u) != getchar(y, u)) {
return getchar(x, u) < getchar(y, u);
if (get_character(x, u) != get_character(y, u)) {
return get_character(x, u) < get_character(y, u);
}
}
return length(x) < length(y);
}
size_t fchar_offset;
Get_char getchar;
Get_char get_character;
Get_length length;
};
@@ -379,7 +379,7 @@ namespace spreadsort {
string_sort_rec(RandomAccessIter first, RandomAccessIter last,
size_t char_offset, std::vector<RandomAccessIter> &bin_cache,
unsigned cache_offset, size_t *bin_sizes,
Get_char getchar, Get_length length)
Get_char get_character, Get_length length)
{
typedef typename std::iterator_traits<RandomAccessIter>::value_type
Data_type;
@@ -394,7 +394,7 @@ namespace spreadsort {
//Getting the last non-empty
for (;length(*finish) <= char_offset; --finish);
++finish;
update_offset(first, finish, char_offset, getchar, length);
update_offset(first, finish, char_offset, get_character, length);
const unsigned bin_count = (1 << (sizeof(Unsigned_char_type)*8));
//Equal worst-case of radix and comparison is when bin_count = n*log(n).
@@ -410,7 +410,7 @@ namespace spreadsort {
bin_sizes[0]++;
}
else
bin_sizes[getchar((*current), char_offset) + 1]++;
bin_sizes[get_character((*current), char_offset) + 1]++;
}
//Assign the bin positions
bin_cache[cache_offset] = first;
@@ -429,7 +429,7 @@ namespace spreadsort {
++current) {
//empties belong in this bin
while (length(*current) > char_offset) {
target_bin = bins + getchar((*current), char_offset);
target_bin = bins + get_character((*current), char_offset);
iter_swap(current, (*target_bin)++);
}
}
@@ -446,9 +446,9 @@ namespace spreadsort {
for (RandomAccessIter current = *local_bin; current < next_bin_start;
++current) {
//Swapping into place until the correct element has been swapped in
for (target_bin = bins + getchar((*current), char_offset);
for (target_bin = bins + get_character((*current), char_offset);
target_bin != local_bin;
target_bin = bins + getchar((*current), char_offset))
target_bin = bins + get_character((*current), char_offset))
iter_swap(current, (*target_bin)++);
}
*local_bin = next_bin_start;
@@ -471,7 +471,7 @@ namespace spreadsort {
else
string_sort_rec<RandomAccessIter, Unsigned_char_type, Get_char,
Get_length>(lastPos, bin_cache[u], char_offset + 1, bin_cache,
cache_end, bin_sizes, getchar, length);
cache_end, bin_sizes, get_character, length);
}
}
@@ -482,7 +482,7 @@ namespace spreadsort {
string_sort_rec(RandomAccessIter first, RandomAccessIter last,
size_t char_offset, std::vector<RandomAccessIter> &bin_cache,
unsigned cache_offset, size_t *bin_sizes,
Get_char getchar, Get_length length, Compare comp)
Get_char get_character, Get_length length, Compare comp)
{
//This section makes handling of long identical substrings much faster
//with a mild average performance impact.
@@ -495,7 +495,7 @@ namespace spreadsort {
//Getting the last non-empty
for (;length(*finish) <= char_offset; --finish);
++finish;
update_offset(first, finish, char_offset, getchar, length);
update_offset(first, finish, char_offset, get_character, length);
const unsigned bin_count = (1 << (sizeof(Unsigned_char_type)*8));
//Equal worst-case of radix and comparison is when bin_count = n*log(n).
@@ -511,7 +511,7 @@ namespace spreadsort {
bin_sizes[0]++;
}
else
bin_sizes[getchar((*current), char_offset) + 1]++;
bin_sizes[get_character((*current), char_offset) + 1]++;
}
//Assign the bin positions
bin_cache[cache_offset] = first;
@@ -530,7 +530,7 @@ namespace spreadsort {
++current) {
//empties belong in this bin
while (length(*current) > char_offset) {
target_bin = bins + getchar((*current), char_offset);
target_bin = bins + get_character((*current), char_offset);
iter_swap(current, (*target_bin)++);
}
}
@@ -547,9 +547,9 @@ namespace spreadsort {
for (RandomAccessIter current = *local_bin; current < next_bin_start;
++current) {
//Swapping into place until the correct element has been swapped in
for (target_bin = bins + getchar((*current), char_offset);
for (target_bin = bins + get_character((*current), char_offset);
target_bin != local_bin;
target_bin = bins + getchar((*current), char_offset))
target_bin = bins + get_character((*current), char_offset))
iter_swap(current, (*target_bin)++);
}
*local_bin = next_bin_start;
@@ -572,7 +572,7 @@ namespace spreadsort {
string_sort_rec<RandomAccessIter, Unsigned_char_type, Get_char,
Get_length, Compare>
(lastPos, bin_cache[u], char_offset + 1, bin_cache, cache_end,
bin_sizes, getchar, length, comp);
bin_sizes, get_character, length, comp);
}
}
@@ -583,7 +583,7 @@ namespace spreadsort {
reverse_string_sort_rec(RandomAccessIter first, RandomAccessIter last,
size_t char_offset, std::vector<RandomAccessIter> &bin_cache,
unsigned cache_offset, size_t *bin_sizes,
Get_char getchar, Get_length length, Compare comp)
Get_char get_character, Get_length length, Compare comp)
{
//This section makes handling of long identical substrings much faster
//with a mild average performance impact.
@@ -598,7 +598,7 @@ namespace spreadsort {
++last;
//Offsetting on identical characters. This section works
//a character at a time for optimal worst-case performance.
update_offset(curr, last, char_offset, getchar, length);
update_offset(curr, last, char_offset, get_character, length);
const unsigned bin_count = (1 << (sizeof(Unsigned_char_type)*8));
//Equal worst-case of radix and comparison is when bin_count = n*log(n).
@@ -616,7 +616,7 @@ namespace spreadsort {
bin_sizes[bin_count]++;
}
else
bin_sizes[max_bin - getchar((*current), char_offset)]++;
bin_sizes[max_bin - get_character((*current), char_offset)]++;
}
//Assign the bin positions
bin_cache[cache_offset] = first;
@@ -635,7 +635,7 @@ namespace spreadsort {
++current) {
//empties belong in this bin
while (length(*current) > char_offset) {
target_bin = end_bin - getchar((*current), char_offset);
target_bin = end_bin - get_character((*current), char_offset);
iter_swap(current, (*target_bin)++);
}
}
@@ -653,9 +653,9 @@ namespace spreadsort {
for (RandomAccessIter current = *local_bin; current < next_bin_start;
++current) {
//Swapping into place until the correct element has been swapped in
for (target_bin = end_bin - getchar((*current), char_offset);
for (target_bin = end_bin - get_character((*current), char_offset);
target_bin != local_bin;
target_bin = end_bin - getchar((*current), char_offset))
target_bin = end_bin - get_character((*current), char_offset))
iter_swap(current, (*target_bin)++);
}
*local_bin = next_bin_start;
@@ -677,7 +677,7 @@ namespace spreadsort {
reverse_string_sort_rec<RandomAccessIter, Unsigned_char_type,
Get_char, Get_length, Compare>
(lastPos, bin_cache[u], char_offset + 1, bin_cache, cache_end,
bin_sizes, getchar, length, comp);
bin_sizes, get_character, length, comp);
}
}
@@ -737,12 +737,12 @@ namespace spreadsort {
inline typename boost::enable_if_c< sizeof(Unsigned_char_type) <= 2, void
>::type
string_sort(RandomAccessIter first, RandomAccessIter last,
Get_char getchar, Get_length length, Unsigned_char_type)
Get_char get_character, Get_length length, Unsigned_char_type)
{
size_t bin_sizes[(1 << (8 * sizeof(Unsigned_char_type))) + 1];
std::vector<RandomAccessIter> bin_cache;
string_sort_rec<RandomAccessIter, Unsigned_char_type, Get_char,
Get_length>(first, last, 0, bin_cache, 0, bin_sizes, getchar, length);
Get_length>(first, last, 0, bin_cache, 0, bin_sizes, get_character, length);
}
template <class RandomAccessIter, class Get_char, class Get_length,
@@ -750,7 +750,7 @@ namespace spreadsort {
inline typename boost::disable_if_c< sizeof(Unsigned_char_type) <= 2, void
>::type
string_sort(RandomAccessIter first, RandomAccessIter last,
Get_char getchar, Get_length length, Unsigned_char_type)
Get_char get_character, Get_length length, Unsigned_char_type)
{
//Warning that we're using std::sort, even though string_sort was called
BOOST_STATIC_WARNING( sizeof(Unsigned_char_type) <= 2 );
@@ -763,13 +763,13 @@ namespace spreadsort {
inline typename boost::enable_if_c< sizeof(Unsigned_char_type) <= 2, void
>::type
string_sort(RandomAccessIter first, RandomAccessIter last,
Get_char getchar, Get_length length, Compare comp, Unsigned_char_type)
Get_char get_character, Get_length length, Compare comp, Unsigned_char_type)
{
size_t bin_sizes[(1 << (8 * sizeof(Unsigned_char_type))) + 1];
std::vector<RandomAccessIter> bin_cache;
string_sort_rec<RandomAccessIter, Unsigned_char_type, Get_char
, Get_length, Compare>
(first, last, 0, bin_cache, 0, bin_sizes, getchar, length, comp);
(first, last, 0, bin_cache, 0, bin_sizes, get_character, length, comp);
}
//disable_if_c was refusing to compile, so rewrote to use enable_if_c
@@ -778,7 +778,7 @@ namespace spreadsort {
inline typename boost::enable_if_c< (sizeof(Unsigned_char_type) > 2), void
>::type
string_sort(RandomAccessIter first, RandomAccessIter last,
Get_char getchar, Get_length length, Compare comp, Unsigned_char_type)
Get_char get_character, Get_length length, Compare comp, Unsigned_char_type)
{
//Warning that we're using std::sort, even though string_sort was called
BOOST_STATIC_WARNING( sizeof(Unsigned_char_type) <= 2 );
@@ -791,13 +791,13 @@ namespace spreadsort {
inline typename boost::enable_if_c< sizeof(Unsigned_char_type) <= 2, void
>::type
reverse_string_sort(RandomAccessIter first, RandomAccessIter last,
Get_char getchar, Get_length length, Compare comp, Unsigned_char_type)
Get_char get_character, Get_length length, Compare comp, Unsigned_char_type)
{
size_t bin_sizes[(1 << (8 * sizeof(Unsigned_char_type))) + 1];
std::vector<RandomAccessIter> bin_cache;
reverse_string_sort_rec<RandomAccessIter, Unsigned_char_type, Get_char,
Get_length, Compare>
(first, last, 0, bin_cache, 0, bin_sizes, getchar, length, comp);
(first, last, 0, bin_cache, 0, bin_sizes, get_character, length, comp);
}
template <class RandomAccessIter, class Get_char, class Get_length,
@@ -805,7 +805,7 @@ namespace spreadsort {
inline typename boost::disable_if_c< sizeof(Unsigned_char_type) <= 2, void
>::type
reverse_string_sort(RandomAccessIter first, RandomAccessIter last,
Get_char getchar, Get_length length, Compare comp, Unsigned_char_type)
Get_char get_character, Get_length length, Compare comp, Unsigned_char_type)
{
//Warning that we're using std::sort, even though string_sort was called
BOOST_STATIC_WARNING( sizeof(Unsigned_char_type) <= 2 );

View File

@@ -419,7 +419,7 @@ Some performance plots of runtime vs. n and log(range) are provided:\n
\param[in] first Iterator pointer to first element.
\param[in] last Iterator pointing to one beyond the end of data.
\param[in] getchar Bracket functor equivalent to @c operator[], taking a number corresponding to the character offset.
\param[in] get_character Bracket functor equivalent to @c operator[], taking a number corresponding to the character offset.
\param[in] length Functor to get the length of the string in characters.
\pre [@c first, @c last) is a valid range.
@@ -448,7 +448,7 @@ Some performance plots of runtime vs. n and log(range) are provided:\n
*/
template <class RandomAccessIter, class Get_char, class Get_length>
inline void string_sort(RandomAccessIter first, RandomAccessIter last,
Get_char getchar, Get_length length)
Get_char get_character, Get_length length)
{
//Don't sort if it's too small to optimize
if (last - first < detail::min_sort_size)
@@ -460,7 +460,7 @@ Some performance plots of runtime vs. n and log(range) are provided:\n
if (++first == last)
return;
}
detail::string_sort(first, last, getchar, length, getchar((*first), 0));
detail::string_sort(first, last, get_character, length, get_character((*first), 0));
}
}
@@ -479,7 +479,7 @@ Some performance plots of runtime vs. n and log(range) are provided:\n
<a href="../../doc/graph/osx_string_sort.htm"> osx_string_sort</a>
\param[in] range Range [first, last) for sorting.
\param[in] getchar Bracket functor equivalent to @c operator[], taking a number corresponding to the character offset.
\param[in] get_character Bracket functor equivalent to @c operator[], taking a number corresponding to the character offset.
\param[in] length Functor to get the length of the string in characters.
\pre [@c first, @c last) is a valid range.
@@ -503,9 +503,9 @@ Some performance plots of runtime vs. n and log(range) are provided:\n
*/
template <class Range, class Get_char, class Get_length>
inline void string_sort(Range& range, Get_char getchar, Get_length length)
inline void string_sort(Range& range, Get_char get_character, Get_length length)
{
string_sort(boost::begin(range), boost::end(range), getchar, length);
string_sort(boost::begin(range), boost::end(range), get_character, length);
}
@@ -526,7 +526,7 @@ Some performance plots of runtime vs. n and log(range) are provided:\n
\param[in] first Iterator pointer to first element.
\param[in] last Iterator pointing to one beyond the end of data.
\param[in] getchar Bracket functor equivalent to @c operator[], taking a number corresponding to the character offset.
\param[in] get_character Bracket functor equivalent to @c operator[], taking a number corresponding to the character offset.
\param[in] length Functor to get the length of the string in characters.
\param[in] comp A binary functor that returns whether the first element passed to it should go before the second in order.
@@ -556,7 +556,7 @@ Some performance plots of runtime vs. n and log(range) are provided:\n
template <class RandomAccessIter, class Get_char, class Get_length,
class Compare>
inline void string_sort(RandomAccessIter first, RandomAccessIter last,
Get_char getchar, Get_length length, Compare comp)
Get_char get_character, Get_length length, Compare comp)
{
//Don't sort if it's too small to optimize
if (last - first < detail::min_sort_size)
@@ -568,8 +568,8 @@ Some performance plots of runtime vs. n and log(range) are provided:\n
if (++first == last)
return;
}
detail::string_sort(first, last, getchar, length, comp,
getchar((*first), 0));
detail::string_sort(first, last, get_character, length, comp,
get_character((*first), 0));
}
}
@@ -589,7 +589,7 @@ Some performance plots of runtime vs. n and log(range) are provided:\n
\param[in] range Range [first, last) for sorting.
\param[in] getchar Bracket functor equivalent to @c operator[], taking a number corresponding to the character offset.
\param[in] get_character Bracket functor equivalent to @c operator[], taking a number corresponding to the character offset.
\param[in] length Functor to get the length of the string in characters.
\param[in] comp A binary functor that returns whether the first element passed to it should go before the second in order.
@@ -616,9 +616,9 @@ Some performance plots of runtime vs. n and log(range) are provided:\n
*/
template <class Range, class Get_char, class Get_length, class Compare>
inline void string_sort(Range& range,
Get_char getchar, Get_length length, Compare comp)
Get_char get_character, Get_length length, Compare comp)
{
string_sort(boost::begin(range), boost::end(range), getchar, length, comp);
string_sort(boost::begin(range), boost::end(range), get_character, length, comp);
}
/*! \brief Reverse String sort algorithm using random access iterators.
@@ -638,7 +638,7 @@ Some performance plots of runtime vs. n and log(range) are provided:\n
\param[in] first Iterator pointer to first element.
\param[in] last Iterator pointing to one beyond the end of data.
\param[in] getchar Bracket functor equivalent to @c operator[], taking a number corresponding to the character offset.
\param[in] get_character Bracket functor equivalent to @c operator[], taking a number corresponding to the character offset.
\param[in] length Functor to get the length of the string in characters.
\param[in] comp A binary functor that returns whether the first element passed to it should go before the second in order.
@@ -668,7 +668,7 @@ Some performance plots of runtime vs. n and log(range) are provided:\n
template <class RandomAccessIter, class Get_char, class Get_length,
class Compare>
inline void reverse_string_sort(RandomAccessIter first,
RandomAccessIter last, Get_char getchar, Get_length length, Compare comp)
RandomAccessIter last, Get_char get_character, Get_length length, Compare comp)
{
//Don't sort if it's too small to optimize
if (last - first < detail::min_sort_size)
@@ -682,8 +682,8 @@ Some performance plots of runtime vs. n and log(range) are provided:\n
return;
}
//making last just after the end of the non-empty part of the array
detail::reverse_string_sort(first, last + 1, getchar, length, comp,
getchar((*last), 0));
detail::reverse_string_sort(first, last + 1, get_character, length, comp,
get_character((*last), 0));
}
}
@@ -703,7 +703,7 @@ Some performance plots of runtime vs. n and log(range) are provided:\n
\param[in] range Range [first, last) for sorting.
\param[in] getchar Bracket functor equivalent to @c operator[], taking a number corresponding to the character offset.
\param[in] get_character Bracket functor equivalent to @c operator[], taking a number corresponding to the character offset.
\param[in] length Functor to get the length of the string in characters.
\param[in] comp A binary functor that returns whether the first element passed to it should go before the second in order.
@@ -730,9 +730,9 @@ Some performance plots of runtime vs. n and log(range) are provided:\n
*/
template <class Range, class Get_char, class Get_length,
class Compare>
inline void reverse_string_sort(Range& range, Get_char getchar, Get_length length, Compare comp)
inline void reverse_string_sort(Range& range, Get_char get_character, Get_length length, Compare comp)
{
reverse_string_sort(boost::begin(range), boost::end(range), getchar, length, comp);
reverse_string_sort(boost::begin(range), boost::end(range), get_character, length, comp);
}
}
}