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:
@@ -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, < <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 (>=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, < <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 (>=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 &</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, < <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 (>=100kB).<sbr/>
|
||||
</template><parameter name="range"><paramtype>Range &</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, < <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 (>=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, < <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 (>=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, < <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 (>=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 &</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, < <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 (>=100kB).<sbr/>
|
||||
</template><parameter name="range"><paramtype>Range &</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, < <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 (>=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, < <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 (>=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, < <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 (>=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 &</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, < <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 (>=100kB).<sbr/>
|
||||
</template><parameter name="range"><paramtype>Range &</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, < <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 (>=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/>
|
||||
|
||||
@@ -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*.
|
||||
|
||||
|
||||
]]
|
||||
|
||||
@@ -130,7 +130,7 @@ Functions</h2></td></tr>
|
||||
<tr class="memitem:a585497946eeb8cc1d2072642d7f1da01"><td class="memTemplItemLeft" align="right" valign="top">void </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 &char_offset)</td></tr>
|
||||
<tr class="separator:a585497946eeb8cc1d2072642d7f1da01"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a415ebdb0c9a5e9209bbfc7d2e576374c"><td class="memTemplParams" colspan="2">template<class RandomAccessIter , class Get_char , class Get_length > </td></tr>
|
||||
<tr class="memitem:a415ebdb0c9a5e9209bbfc7d2e576374c"><td class="memTemplItemLeft" align="right" valign="top">void </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 &char_offset, Get_char getchar, Get_length length)</td></tr>
|
||||
<tr class="memitem:a415ebdb0c9a5e9209bbfc7d2e576374c"><td class="memTemplItemLeft" align="right" valign="top">void </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 &char_offset, Get_char get_character, Get_length length)</td></tr>
|
||||
<tr class="separator:a415ebdb0c9a5e9209bbfc7d2e576374c"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ad1655ab39e410e18b6e8b6694405e5ba"><td class="memTemplParams" colspan="2">template<class RandomAccessIter , class Unsigned_char_type > </td></tr>
|
||||
<tr class="memitem:ad1655ab39e410e18b6e8b6694405e5ba"><td class="memTemplItemLeft" align="right" valign="top">void </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< RandomAccessIter > &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 </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< RandomAccessIter > &bin_cache, unsigned cache_offset, size_t *bin_sizes)</td></tr>
|
||||
<tr class="separator:a66be693262defeff06a4a3507155d4a3"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:af825e4484173e0b886d0b24f66ae4a64"><td class="memTemplParams" colspan="2">template<class RandomAccessIter , class Unsigned_char_type , class Get_char , class Get_length > </td></tr>
|
||||
<tr class="memitem:af825e4484173e0b886d0b24f66ae4a64"><td class="memTemplItemLeft" align="right" valign="top">void </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< RandomAccessIter > &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 </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< RandomAccessIter > &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"> </td></tr>
|
||||
<tr class="memitem:a49ccfc022cfef8a14bbbbeccd36d78ec"><td class="memTemplParams" colspan="2">template<class RandomAccessIter , class Unsigned_char_type , class Get_char , class Get_length , class Compare > </td></tr>
|
||||
<tr class="memitem:a49ccfc022cfef8a14bbbbeccd36d78ec"><td class="memTemplItemLeft" align="right" valign="top">void </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< RandomAccessIter > &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 </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< RandomAccessIter > &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"> </td></tr>
|
||||
<tr class="memitem:ab71cd7c25eada649fa1aff16fb3549f6"><td class="memTemplParams" colspan="2">template<class RandomAccessIter , class Unsigned_char_type , class Get_char , class Get_length , class Compare > </td></tr>
|
||||
<tr class="memitem:ab71cd7c25eada649fa1aff16fb3549f6"><td class="memTemplItemLeft" align="right" valign="top">void </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< RandomAccessIter > &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 </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< RandomAccessIter > &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"> </td></tr>
|
||||
</table>
|
||||
</div><!-- contents -->
|
||||
|
||||
@@ -168,7 +168,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">template</span><<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Get_<span class="keywordtype">char</span>, <span class="keyword">class</span> Get_length></div>
|
||||
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <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>  <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>  <span class="keywordtype">size_t</span> &char_offset, Get_char getchar, Get_length length)</div>
|
||||
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordtype">size_t</span> &char_offset, Get_char get_character, Get_length length)</div>
|
||||
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  {</div>
|
||||
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordtype">size_t</span> nextOffset = char_offset;</div>
|
||||
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <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>  <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>  <span class="comment">//not match, exit; we've found the last matching character</span></div>
|
||||
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">if</span> (length(*curr) > char_offset && (length(*curr) <= (nextOffset + 1)</div>
|
||||
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  || getchar((*curr), nextOffset) != getchar((*first), nextOffset))) {</div>
|
||||
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  || get_character((*curr), nextOffset) != get_character((*first), nextOffset))) {</div>
|
||||
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  char_offset = nextOffset;</div>
|
||||
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">return</span>;</div>
|
||||
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</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> <span class="keyword"> </span>{</div>
|
||||
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <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>  <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 < minSize; ++u) {</div>
|
||||
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <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>  <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) < <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>  <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>  <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) < <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>  }</div>
|
||||
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  }</div>
|
||||
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">return</span> <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="l00152"></a><span class="lineno"> 152</span>  }</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>  <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>  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>  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>  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>  };</div>
|
||||
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </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>  <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>  <span class="keywordtype">size_t</span> char_offset, std::vector<RandomAccessIter> &bin_cache,</div>
|
||||
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <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>  Get_char getchar, Get_length length)</div>
|
||||
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  Get_char get_character, Get_length length)</div>
|
||||
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  {</div>
|
||||
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> std::iterator_traits<RandomAccessIter>::value_type</div>
|
||||
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  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>  <span class="comment">//Getting the last non-empty</span></div>
|
||||
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">for</span> (;length(*finish) <= char_offset; --finish);</div>
|
||||
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  ++finish;</div>
|
||||
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <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>  <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> </div>
|
||||
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> bin_count = (1 << (<span class="keyword">sizeof</span>(Unsigned_char_type)*8));</div>
|
||||
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <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>  bin_sizes[0]++;</div>
|
||||
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  }</div>
|
||||
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  bin_sizes[getchar((*current), char_offset) + 1]++;</div>
|
||||
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  bin_sizes[get_character((*current), char_offset) + 1]++;</div>
|
||||
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  }</div>
|
||||
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="comment">//Assign the bin positions</span></div>
|
||||
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  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>  ++current) {</div>
|
||||
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="comment">//empties belong in this bin</span></div>
|
||||
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keywordflow">while</span> (length(*current) > char_offset) {</div>
|
||||
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  target_bin = bins + getchar((*current), char_offset);</div>
|
||||
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  target_bin = bins + get_character((*current), char_offset);</div>
|
||||
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  iter_swap(current, (*target_bin)++);</div>
|
||||
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  }</div>
|
||||
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  }</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>  <span class="keywordflow">for</span> (RandomAccessIter current = *local_bin; current < next_bin_start;</div>
|
||||
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  ++current) {</div>
|
||||
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <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>  <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>  <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>  target_bin != local_bin;</div>
|
||||
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  target_bin = bins + getchar((*current), char_offset))</div>
|
||||
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  target_bin = bins + get_character((*current), char_offset))</div>
|
||||
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  iter_swap(current, (*target_bin)++);</div>
|
||||
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  }</div>
|
||||
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  *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>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <a class="code" href="namespaceboost_1_1sort_1_1detail.html#ad1655ab39e410e18b6e8b6694405e5ba">string_sort_rec</a><RandomAccessIter, Unsigned_char_type, Get_char,</div>
|
||||
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  Get_length>(lastPos, bin_cache[u], char_offset + 1, bin_cache,</div>
|
||||
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  cache_end, bin_sizes, getchar, length);</div>
|
||||
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  cache_end, bin_sizes, get_character, length);</div>
|
||||
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  }</div>
|
||||
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  }</div>
|
||||
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span> </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>  <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>  <span class="keywordtype">size_t</span> char_offset, std::vector<RandomAccessIter> &bin_cache,</div>
|
||||
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <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>  Get_char getchar, Get_length length, Compare comp)</div>
|
||||
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  Get_char get_character, Get_length length, Compare comp)</div>
|
||||
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  {</div>
|
||||
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <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>  <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>  <span class="comment">//Getting the last non-empty</span></div>
|
||||
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="keywordflow">for</span> (;length(*finish) <= char_offset; --finish);</div>
|
||||
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  ++finish;</div>
|
||||
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <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>  <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> </div>
|
||||
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> bin_count = (1 << (<span class="keyword">sizeof</span>(Unsigned_char_type)*8));</div>
|
||||
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <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>  bin_sizes[0]++;</div>
|
||||
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  }</div>
|
||||
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  bin_sizes[getchar((*current), char_offset) + 1]++;</div>
|
||||
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  bin_sizes[get_character((*current), char_offset) + 1]++;</div>
|
||||
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  }</div>
|
||||
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="comment">//Assign the bin positions</span></div>
|
||||
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  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>  ++current) {</div>
|
||||
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="comment">//empties belong in this bin</span></div>
|
||||
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="keywordflow">while</span> (length(*current) > char_offset) {</div>
|
||||
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  target_bin = bins + getchar((*current), char_offset);</div>
|
||||
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  target_bin = bins + get_character((*current), char_offset);</div>
|
||||
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  iter_swap(current, (*target_bin)++);</div>
|
||||
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  }</div>
|
||||
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  }</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>  <span class="keywordflow">for</span> (RandomAccessIter current = *local_bin; current < next_bin_start;</div>
|
||||
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  ++current) {</div>
|
||||
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <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>  <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>  <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>  target_bin != local_bin;</div>
|
||||
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  target_bin = bins + getchar((*current), char_offset))</div>
|
||||
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  target_bin = bins + get_character((*current), char_offset))</div>
|
||||
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  iter_swap(current, (*target_bin)++);</div>
|
||||
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  }</div>
|
||||
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  *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>  <a class="code" href="namespaceboost_1_1sort_1_1detail.html#ad1655ab39e410e18b6e8b6694405e5ba">string_sort_rec</a><RandomAccessIter, Unsigned_char_type, Get_char,</div>
|
||||
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  Get_length, Compare></div>
|
||||
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  (lastPos, bin_cache[u], char_offset + 1, bin_cache, cache_end,</div>
|
||||
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  bin_sizes, getchar, length, comp);</div>
|
||||
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  bin_sizes, get_character, length, comp);</div>
|
||||
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  }</div>
|
||||
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  }</div>
|
||||
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span> </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>  <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>  <span class="keywordtype">size_t</span> char_offset, std::vector<RandomAccessIter> &bin_cache,</div>
|
||||
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <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>  Get_char getchar, Get_length length, Compare comp)</div>
|
||||
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  Get_char get_character, Get_length length, Compare comp)</div>
|
||||
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  {</div>
|
||||
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <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>  <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>  ++last;</div>
|
||||
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <span class="comment">//Offsetting on identical characters. This section works</span></div>
|
||||
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <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>  <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>  <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> </div>
|
||||
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> bin_count = (1 << (<span class="keyword">sizeof</span>(Unsigned_char_type)*8));</div>
|
||||
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <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>  bin_sizes[bin_count]++;</div>
|
||||
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  }</div>
|
||||
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <span class="keywordflow">else</span></div>
|
||||
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  bin_sizes[max_bin - getchar((*current), char_offset)]++;</div>
|
||||
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  bin_sizes[max_bin - get_character((*current), char_offset)]++;</div>
|
||||
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  }</div>
|
||||
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  <span class="comment">//Assign the bin positions</span></div>
|
||||
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  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>  ++current) {</div>
|
||||
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="comment">//empties belong in this bin</span></div>
|
||||
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <span class="keywordflow">while</span> (length(*current) > char_offset) {</div>
|
||||
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  target_bin = end_bin - getchar((*current), char_offset);</div>
|
||||
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  target_bin = end_bin - get_character((*current), char_offset);</div>
|
||||
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  iter_swap(current, (*target_bin)++);</div>
|
||||
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  }</div>
|
||||
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  }</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>  <span class="keywordflow">for</span> (RandomAccessIter current = *local_bin; current < next_bin_start;</div>
|
||||
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  ++current) {</div>
|
||||
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  <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>  <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>  <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>  target_bin != local_bin;</div>
|
||||
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  target_bin = end_bin - getchar((*current), char_offset))</div>
|
||||
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  target_bin = end_bin - get_character((*current), char_offset))</div>
|
||||
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  iter_swap(current, (*target_bin)++);</div>
|
||||
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  }</div>
|
||||
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  *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>  <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a66be693262defeff06a4a3507155d4a3">reverse_string_sort_rec</a><RandomAccessIter, Unsigned_char_type,</div>
|
||||
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  Get_char, Get_length, Compare></div>
|
||||
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  (lastPos, bin_cache[u], char_offset + 1, bin_cache, cache_end,</div>
|
||||
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  bin_sizes, getchar, length, comp);</div>
|
||||
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  bin_sizes, get_character, length, comp);</div>
|
||||
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  }</div>
|
||||
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  }</div>
|
||||
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span> </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>  <span class="keyword">inline</span> <span class="keyword">typename</span> boost::enable_if_c< <span class="keyword">sizeof</span>(Unsigned_char_type) <= 2, <span class="keywordtype">void</span></div>
|
||||
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  >::type</div>
|
||||
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  <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>  Get_char getchar, Get_length length, Unsigned_char_type)</div>
|
||||
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  Get_char get_character, Get_length length, Unsigned_char_type)</div>
|
||||
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  {</div>
|
||||
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  <span class="keywordtype">size_t</span> bin_sizes[(1 << (8 * <span class="keyword">sizeof</span>(Unsigned_char_type))) + 1];</div>
|
||||
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  std::vector<RandomAccessIter> bin_cache;</div>
|
||||
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  <a class="code" href="namespaceboost_1_1sort_1_1detail.html#ad1655ab39e410e18b6e8b6694405e5ba">string_sort_rec</a><RandomAccessIter, Unsigned_char_type, Get_char,</div>
|
||||
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  Get_length>(first, last, 0, bin_cache, 0, bin_sizes, getchar, length);</div>
|
||||
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  Get_length>(first, last, 0, bin_cache, 0, bin_sizes, get_character, length);</div>
|
||||
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  }</div>
|
||||
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span> </div>
|
||||
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  <span class="keyword">template</span> <<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>  <span class="keyword">inline</span> <span class="keyword">typename</span> boost::disable_if_c< <span class="keyword">sizeof</span>(Unsigned_char_type) <= 2, <span class="keywordtype">void</span></div>
|
||||
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  >::type</div>
|
||||
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  <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>  Get_char getchar, Get_length length, Unsigned_char_type)</div>
|
||||
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  Get_char get_character, Get_length length, Unsigned_char_type)</div>
|
||||
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  {</div>
|
||||
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  <span class="comment">//Warning that we're using std::sort, even though string_sort was called</span></div>
|
||||
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  BOOST_STATIC_WARNING( <span class="keyword">sizeof</span>(Unsigned_char_type) <= 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>  <span class="keyword">inline</span> <span class="keyword">typename</span> boost::enable_if_c< <span class="keyword">sizeof</span>(Unsigned_char_type) <= 2, <span class="keywordtype">void</span></div>
|
||||
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  >::type</div>
|
||||
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  <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>  Get_char getchar, Get_length length, Compare comp, Unsigned_char_type)</div>
|
||||
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  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>  {</div>
|
||||
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  <span class="keywordtype">size_t</span> bin_sizes[(1 << (8 * <span class="keyword">sizeof</span>(Unsigned_char_type))) + 1];</div>
|
||||
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  std::vector<RandomAccessIter> bin_cache;</div>
|
||||
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  <a class="code" href="namespaceboost_1_1sort_1_1detail.html#ad1655ab39e410e18b6e8b6694405e5ba">string_sort_rec</a><RandomAccessIter, Unsigned_char_type, Get_char</div>
|
||||
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  , Get_length, Compare></div>
|
||||
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  (first, last, 0, bin_cache, 0, bin_sizes, getchar, length, comp);</div>
|
||||
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  (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>  }</div>
|
||||
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span> </div>
|
||||
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  <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>  <span class="keyword">inline</span> <span class="keyword">typename</span> boost::enable_if_c< (sizeof(Unsigned_char_type) > 2), <span class="keywordtype">void</span></div>
|
||||
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  >::type</div>
|
||||
<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  <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>  Get_char getchar, Get_length length, Compare comp, Unsigned_char_type)</div>
|
||||
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  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>  {</div>
|
||||
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  <span class="comment">//Warning that we're using std::sort, even though string_sort was called</span></div>
|
||||
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  BOOST_STATIC_WARNING( <span class="keyword">sizeof</span>(Unsigned_char_type) <= 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>  <span class="keyword">inline</span> <span class="keyword">typename</span> boost::enable_if_c< <span class="keyword">sizeof</span>(Unsigned_char_type) <= 2, <span class="keywordtype">void</span></div>
|
||||
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  >::type</div>
|
||||
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  <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>  Get_char getchar, Get_length length, Compare comp, Unsigned_char_type)</div>
|
||||
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  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>  {</div>
|
||||
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  <span class="keywordtype">size_t</span> bin_sizes[(1 << (8 * <span class="keyword">sizeof</span>(Unsigned_char_type))) + 1];</div>
|
||||
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  std::vector<RandomAccessIter> bin_cache;</div>
|
||||
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  <a class="code" href="namespaceboost_1_1sort_1_1detail.html#a66be693262defeff06a4a3507155d4a3">reverse_string_sort_rec</a><RandomAccessIter, Unsigned_char_type, Get_char,</div>
|
||||
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  Get_length, Compare></div>
|
||||
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  (first, last, 0, bin_cache, 0, bin_sizes, getchar, length, comp);</div>
|
||||
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  (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>  }</div>
|
||||
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span> </div>
|
||||
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  <span class="keyword">template</span> <<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>  <span class="keyword">inline</span> <span class="keyword">typename</span> boost::disable_if_c< <span class="keyword">sizeof</span>(Unsigned_char_type) <= 2, <span class="keywordtype">void</span></div>
|
||||
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  >::type</div>
|
||||
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  <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>  Get_char getchar, Get_length length, Compare comp, Unsigned_char_type)</div>
|
||||
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  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>  {</div>
|
||||
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  <span class="comment">//Warning that we're using std::sort, even though string_sort was called</span></div>
|
||||
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  BOOST_STATIC_WARNING( <span class="keyword">sizeof</span>(Unsigned_char_type) <= 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< RandomAccessIter > &bin_cache, unsigned cache_offset, unsigned &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 &x, const Data_type &y) const </div><div class="ttdef"><b>Definition:</b> string_sort.hpp:143</div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
|
||||
@@ -152,15 +152,15 @@ Functions</h2></td></tr>
|
||||
<tr class="memdesc:afd4938835fd03aab9c42bd0653e5dbe5"><td class="mdescLeft"> </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"> </td></tr>
|
||||
<tr class="memitem:a5143ec4f58cfe13eca2a0d6b6f6a6680"><td class="memTemplParams" colspan="2">template<class RandomAccessIter , class Get_char , class Get_length > </td></tr>
|
||||
<tr class="memitem:a5143ec4f58cfe13eca2a0d6b6f6a6680"><td class="memTemplItemLeft" align="right" valign="top">void </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 </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"> </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"> </td></tr>
|
||||
<tr class="memitem:a82c4c0d7ba9873ecce7c674631dceae2"><td class="memTemplParams" colspan="2">template<class RandomAccessIter , class Get_char , class Get_length , class Compare > </td></tr>
|
||||
<tr class="memitem:a82c4c0d7ba9873ecce7c674631dceae2"><td class="memTemplItemLeft" align="right" valign="top">void </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 </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"> </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"> </td></tr>
|
||||
<tr class="memitem:a7940f1b2a7746c083a12a4e26077096b"><td class="memTemplParams" colspan="2">template<class RandomAccessIter , class Get_char , class Get_length , class Compare > </td></tr>
|
||||
<tr class="memitem:a7940f1b2a7746c083a12a4e26077096b"><td class="memTemplItemLeft" align="right" valign="top">void </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 </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"> </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"> </td></tr>
|
||||
</table>
|
||||
@@ -883,7 +883,7 @@ template<class RandomAccessIter , class Get_char , class Get_length , class C
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">Get_char </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<class RandomAccessIter , class Get_char , class Get_length > </di
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">Get_char </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<class RandomAccessIter , class Get_char , class Get_length , class C
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">Get_char </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>
|
||||
|
||||
@@ -193,7 +193,7 @@ Functions</h2></td></tr>
|
||||
<tr class="memitem:a585497946eeb8cc1d2072642d7f1da01"><td class="memTemplItemLeft" align="right" valign="top">void </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 &char_offset)</td></tr>
|
||||
<tr class="separator:a585497946eeb8cc1d2072642d7f1da01"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a415ebdb0c9a5e9209bbfc7d2e576374c"><td class="memTemplParams" colspan="2">template<class RandomAccessIter , class Get_char , class Get_length > </td></tr>
|
||||
<tr class="memitem:a415ebdb0c9a5e9209bbfc7d2e576374c"><td class="memTemplItemLeft" align="right" valign="top">void </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 &char_offset, Get_char getchar, Get_length length)</td></tr>
|
||||
<tr class="memitem:a415ebdb0c9a5e9209bbfc7d2e576374c"><td class="memTemplItemLeft" align="right" valign="top">void </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 &char_offset, Get_char get_character, Get_length length)</td></tr>
|
||||
<tr class="separator:a415ebdb0c9a5e9209bbfc7d2e576374c"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ad1655ab39e410e18b6e8b6694405e5ba"><td class="memTemplParams" colspan="2">template<class RandomAccessIter , class Unsigned_char_type > </td></tr>
|
||||
<tr class="memitem:ad1655ab39e410e18b6e8b6694405e5ba"><td class="memTemplItemLeft" align="right" valign="top">void </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< RandomAccessIter > &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 </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< RandomAccessIter > &bin_cache, unsigned cache_offset, size_t *bin_sizes)</td></tr>
|
||||
<tr class="separator:a66be693262defeff06a4a3507155d4a3"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:af825e4484173e0b886d0b24f66ae4a64"><td class="memTemplParams" colspan="2">template<class RandomAccessIter , class Unsigned_char_type , class Get_char , class Get_length > </td></tr>
|
||||
<tr class="memitem:af825e4484173e0b886d0b24f66ae4a64"><td class="memTemplItemLeft" align="right" valign="top">void </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< RandomAccessIter > &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 </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< RandomAccessIter > &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"> </td></tr>
|
||||
<tr class="memitem:a49ccfc022cfef8a14bbbbeccd36d78ec"><td class="memTemplParams" colspan="2">template<class RandomAccessIter , class Unsigned_char_type , class Get_char , class Get_length , class Compare > </td></tr>
|
||||
<tr class="memitem:a49ccfc022cfef8a14bbbbeccd36d78ec"><td class="memTemplItemLeft" align="right" valign="top">void </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< RandomAccessIter > &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 </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< RandomAccessIter > &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"> </td></tr>
|
||||
<tr class="memitem:ab71cd7c25eada649fa1aff16fb3549f6"><td class="memTemplParams" colspan="2">template<class RandomAccessIter , class Unsigned_char_type , class Get_char , class Get_length , class Compare > </td></tr>
|
||||
<tr class="memitem:ab71cd7c25eada649fa1aff16fb3549f6"><td class="memTemplItemLeft" align="right" valign="top">void </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< RandomAccessIter > &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 </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< RandomAccessIter > &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"> </td></tr>
|
||||
</table>
|
||||
<h2 class="groupheader">Enumeration Type Documentation</h2>
|
||||
@@ -1348,7 +1348,7 @@ template<class RandomAccessIter , class Unsigned_char_type , class Get_char ,
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">Get_char </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<class RandomAccessIter , class Unsigned_char_type , class Get_char ,
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">Get_char </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<class RandomAccessIter , class Unsigned_char_type , class Get_char ,
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">Get_char </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<class RandomAccessIter , class Get_char , class Get_length > </di
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">Get_char </td>
|
||||
<td class="paramname"><em>getchar</em>, </td>
|
||||
<td class="paramname"><em>get_character</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
|
||||
@@ -2,7 +2,7 @@ var searchData=
|
||||
[
|
||||
['radix_5fthreshold',['radix_threshold',['../alrbreaker_8cpp.html#afc30457e398e72300f20714123913b78',1,'radix_threshold(): alrbreaker.cpp'],['../binaryalrbreaker_8cpp.html#afc30457e398e72300f20714123913b78',1,'radix_threshold(): 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,'']]],
|
||||
|
||||
@@ -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,'']]]
|
||||
|
||||
@@ -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)']]]
|
||||
];
|
||||
|
||||
@@ -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)']]]
|
||||
];
|
||||
|
||||
@@ -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< RandomAccessIter > &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< RandomAccessIter > &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< RandomAccessIter > &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< RandomAccessIter > &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']]]
|
||||
];
|
||||
|
||||
@@ -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< RandomAccessIter > &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< RandomAccessIter > &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< RandomAccessIter > &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< RandomAccessIter > &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< RandomAccessIter > &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< RandomAccessIter > &bin_cache, unsigned cache_offset, size_t *bin_sizes, Get_char get_character, Get_length length, Compare comp)']]]
|
||||
];
|
||||
|
||||
@@ -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 &char_offset)'],['../namespaceboost_1_1sort_1_1detail.html#a415ebdb0c9a5e9209bbfc7d2e576374c',1,'boost::sort::detail::update_offset(RandomAccessIter first, RandomAccessIter finish, size_t &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 &char_offset)'],['../namespaceboost_1_1sort_1_1detail.html#a415ebdb0c9a5e9209bbfc7d2e576374c',1,'boost::sort::detail::update_offset(RandomAccessIter first, RandomAccessIter finish, size_t &char_offset, Get_char get_character, Get_length length)']]]
|
||||
];
|
||||
|
||||
@@ -129,15 +129,15 @@ Functions</h2></td></tr>
|
||||
<tr class="memdesc:afd4938835fd03aab9c42bd0653e5dbe5"><td class="mdescLeft"> </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"> </td></tr>
|
||||
<tr class="memitem:a5143ec4f58cfe13eca2a0d6b6f6a6680"><td class="memTemplParams" colspan="2">template<class RandomAccessIter , class Get_char , class Get_length > </td></tr>
|
||||
<tr class="memitem:a5143ec4f58cfe13eca2a0d6b6f6a6680"><td class="memTemplItemLeft" align="right" valign="top">void </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 </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"> </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"> </td></tr>
|
||||
<tr class="memitem:a82c4c0d7ba9873ecce7c674631dceae2"><td class="memTemplParams" colspan="2">template<class RandomAccessIter , class Get_char , class Get_length , class Compare > </td></tr>
|
||||
<tr class="memitem:a82c4c0d7ba9873ecce7c674631dceae2"><td class="memTemplItemLeft" align="right" valign="top">void </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 </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"> </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"> </td></tr>
|
||||
<tr class="memitem:a7940f1b2a7746c083a12a4e26077096b"><td class="memTemplParams" colspan="2">template<class RandomAccessIter , class Get_char , class Get_length , class Compare > </td></tr>
|
||||
<tr class="memitem:a7940f1b2a7746c083a12a4e26077096b"><td class="memTemplItemLeft" align="right" valign="top">void </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 </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"> </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"> </td></tr>
|
||||
</table>
|
||||
|
||||
@@ -361,7 +361,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span> <span class="comment"></span></div>
|
||||
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span> <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> <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> <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> <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> <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> <span class="comment"></span></div>
|
||||
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span> <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> <span class="comment">*/</span></div>
|
||||
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keyword">template</span> <<span class="keyword">class</span> RandomAccessIter, <span class="keyword">class</span> Get_<span class="keywordtype">char</span>, <span class="keyword">class</span> Get_length></div>
|
||||
<div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort.html#a5143ec4f58cfe13eca2a0d6b6f6a6680"> 301</a></span>  <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>  Get_char getchar, Get_length length)</div>
|
||||
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  Get_char get_character, Get_length length)</div>
|
||||
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  {</div>
|
||||
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="comment">//Don't sort if it's too small to optimize</span></div>
|
||||
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">if</span> (last - first < 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>  <span class="keywordflow">if</span> (++first == last)</div>
|
||||
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keywordflow">return</span>;</div>
|
||||
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  }</div>
|
||||
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <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>  <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>  }</div>
|
||||
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  }</div>
|
||||
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </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> <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> <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> <span class="comment"> \param[in] comp comparison functor.</span></div>
|
||||
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span> <span class="comment"> \param[in] getchar ???</span></div>
|
||||
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span> <span class="comment"> \param[in] get_character ???</span></div>
|
||||
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span> <span class="comment"> \param[in] length ???</span></div>
|
||||
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span> <span class="comment"></span></div>
|
||||
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span> <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>  <span class="keyword">template</span> <<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>  <span class="keyword">class </span>Compare></div>
|
||||
<div class="line"><a name="l00374"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort.html#a82c4c0d7ba9873ecce7c674631dceae2"> 374</a></span>  <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>  Get_char getchar, Get_length length, Compare comp)</div>
|
||||
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  Get_char get_character, Get_length length, Compare comp)</div>
|
||||
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  {</div>
|
||||
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="comment">//Don't sort if it's too small to optimize</span></div>
|
||||
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keywordflow">if</span> (last - first < 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>  <span class="keywordflow">if</span> (++first == last)</div>
|
||||
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">return</span>;</div>
|
||||
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  }</div>
|
||||
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <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>  getchar((*first), 0));</div>
|
||||
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <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>  get_character((*first), 0));</div>
|
||||
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  }</div>
|
||||
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  }</div>
|
||||
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span> </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> <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> <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> <span class="comment"> \param[in] comp comparison functor.</span></div>
|
||||
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span> <span class="comment"> \param[in] getchar ???</span></div>
|
||||
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span> <span class="comment"> \param[in] get_character ???</span></div>
|
||||
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span> <span class="comment"> \param[in] length ???</span></div>
|
||||
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span> <span class="comment"></span></div>
|
||||
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span> <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>  <span class="keyword">template</span> <<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>  <span class="keyword">class </span>Compare></div>
|
||||
<div class="line"><a name="l00447"></a><span class="lineno"><a class="line" href="namespaceboost_1_1sort.html#a7940f1b2a7746c083a12a4e26077096b"> 447</a></span>  <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>  RandomAccessIter last, Get_char getchar, Get_length length, Compare comp)</div>
|
||||
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  RandomAccessIter last, Get_char get_character, Get_length length, Compare comp)</div>
|
||||
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  {</div>
|
||||
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="comment">//Don't sort if it's too small to optimize</span></div>
|
||||
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keywordflow">if</span> (last - first < 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>  <span class="keywordflow">return</span>;</div>
|
||||
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  }</div>
|
||||
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <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>  <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>  getchar((*last), 0));</div>
|
||||
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <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>  get_character((*last), 0));</div>
|
||||
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  }</div>
|
||||
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  }</div>
|
||||
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span> }</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> </div>
|
||||
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span> <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>
|
||||
|
||||
@@ -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< Data_type, Get_char, Get_length ></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< Data_type, Get_char, Get_length ></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< Data_type, Get_char, Get_length ></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< Data_type, Get_char, Get_length ></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< Data_type, Get_char, Get_length ></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< Data_type, Get_char, Get_length ></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 &x, const Data_type &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< Data_type, Get_char, Get_length ></a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||
|
||||
@@ -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 </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"> </td></tr>
|
||||
<tr class="memitem:afb5424173c237d8cd25722a02c23ab30"><td class="memItemLeft" align="right" valign="top">Get_char </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 </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"> </td></tr>
|
||||
<tr class="memitem:a8ff12c3dcf4a6ea9942b8fc1e5046936"><td class="memItemLeft" align="right" valign="top">Get_length </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"> </td></tr>
|
||||
@@ -199,7 +199,7 @@ template<class Data_type , class Get_char , class Get_length > </div>
|
||||
template<class Data_type , class Get_char , class Get_length > </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>< Data_type, Get_char, Get_length >::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>< Data_type, Get_char, Get_length >::get_character</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
[:
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
]
|
||||
|
||||
|
||||
@@ -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.
|
||||
]
|
||||
|
||||
@@ -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]
|
||||
@@ -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,
|
||||
|
||||
@@ -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]]
|
||||
|
||||
|
||||
@@ -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 );
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user