\hypertarget{namespacekblib_1_1detail__sort}{}\doxysection{kblib\+::detail\+\_\+sort Namespace Reference} \label{namespacekblib_1_1detail__sort}\index{kblib::detail\_sort@{kblib::detail\_sort}} \doxysubsection*{Classes} \begin{DoxyCompactItemize} \item struct \mbox{\hyperlink{structkblib_1_1detail__sort_1_1sort__transform__impl}{sort\+\_\+transform\+\_\+impl}} \begin{DoxyCompactList}\small\item\em Sort data after applying an arbitrary transformation to it. The primary template handles the general case of arbitrary transformation and arbitrary compare predicate. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structkblib_1_1detail__sort_1_1sort__transform__impl_3_01_random_access_it_00_01_unary_operation935542bc395b86fd33cf9be63ad3de74}{sort\+\_\+transform\+\_\+impl$<$ Random\+Access\+It, Unary\+Operation, Binary\+Predicate, Sort\+Key, small\+\_\+size, true, false, false, false $>$}} \begin{DoxyCompactList}\small\item\em Sort implementation for pointer to member object of non-\/fundamental type, so sort keys are constant time to extract (this is most similar to a general \mbox{\hyperlink{namespacekblib_1_1detail__sort_a3b873e1b1c2c3a4865638d2c904c4c1d}{sort()}}) \end{DoxyCompactList}\item struct \mbox{\hyperlink{structkblib_1_1detail__sort_1_1sort__transform__impl_3_01_random_access_it_00_01_unary_operation51fbb4ca17e940976b57d3794660a6d8}{sort\+\_\+transform\+\_\+impl$<$ Random\+Access\+It, Unary\+Operation, std\+::greater$<$ Less\+T $>$, Sort\+Key, small\+\_\+size, M, false, true, false $>$}} \begin{DoxyCompactList}\small\item\em Sort implementation for key of radix sortable type type with reverse sorting. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structkblib_1_1detail__sort_1_1sort__transform__impl_3_01_random_access_it_00_01_unary_operation3c2c850b5ad1e4acd66097d89e51c4f1}{sort\+\_\+transform\+\_\+impl$<$ Random\+Access\+It, Unary\+Operation, std\+::greater$<$ Less\+T $>$, Sort\+Key, small\+\_\+size, true, true, false, false $>$}} \begin{DoxyCompactList}\small\item\em Sort implementation for pointer to member object of fundamental non-\/integral type with reverse sorting, so sort keys are constant time to extract and compare. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structkblib_1_1detail__sort_1_1sort__transform__impl_3_01_random_access_it_00_01_unary_operationbcac2feda0fade87a36510b7d31d2576}{sort\+\_\+transform\+\_\+impl$<$ Random\+Access\+It, Unary\+Operation, std\+::greater$<$ Less\+T $>$, Sort\+Key, small\+\_\+size, true, true, true, true $>$}} \begin{DoxyCompactList}\small\item\em Sort implementation for pointer to member object of integral type with reverse sorting, so we can do radix sort. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structkblib_1_1detail__sort_1_1sort__transform__impl_3_01_random_access_it_00_01_unary_operationfec06b35b16d095881d1da3ea9777678}{sort\+\_\+transform\+\_\+impl$<$ Random\+Access\+It, Unary\+Operation, std\+::less$<$ Less\+T $>$, Sort\+Key, small\+\_\+size, M, false, true, false $>$}} \begin{DoxyCompactList}\small\item\em Sort implementation for key of radix sortable type type with default sorting. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structkblib_1_1detail__sort_1_1sort__transform__impl_3_01_random_access_it_00_01_unary_operationf1e9e425aa5b0d07fb4c879cfd659585}{sort\+\_\+transform\+\_\+impl$<$ Random\+Access\+It, Unary\+Operation, std\+::less$<$ Less\+T $>$, Sort\+Key, small\+\_\+size, true, true, false, false $>$}} \begin{DoxyCompactList}\small\item\em Sort implementation for pointer to member object of fundamental non-\/integral type with default sorting, so sort keys are constant time to extract and compare. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structkblib_1_1detail__sort_1_1sort__transform__impl_3_01_random_access_it_00_01_unary_operation03a4b8b2612786c18e671d7b72685405}{sort\+\_\+transform\+\_\+impl$<$ Random\+Access\+It, Unary\+Operation, std\+::less$<$ Less\+T $>$, Sort\+Key, small\+\_\+size, true, true, true, true $>$}} \begin{DoxyCompactList}\small\item\em Sort implementation for pointer to member object of integral type with default sorting, so we can do radix sort. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsection*{Enumerations} \begin{DoxyCompactItemize} \item enum class \mbox{\hyperlink{namespacekblib_1_1detail__sort_ae4569ffb1f5bfbe2b7792cba89647a07}{sort\+\_\+direction}} \{ \mbox{\hyperlink{namespacekblib_1_1detail__sort_ae4569ffb1f5bfbe2b7792cba89647a07a9c9ab624360885fcf93b7643c93b6748}{ascending}} , \mbox{\hyperlink{namespacekblib_1_1detail__sort_ae4569ffb1f5bfbe2b7792cba89647a07ab19e9805fd7727c52ca04dfa3d24a2e5}{descending}} \} \end{DoxyCompactItemize} \doxysubsection*{Functions} \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename Random\+Access\+It , typename Compare $>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_1_1detail__sort_a3b873e1b1c2c3a4865638d2c904c4c1d}{sort}} (Random\+Access\+It, const Random\+Access\+It, Compare) -\/$>$ void \item {\footnotesize template$<$typename Random\+Access\+It , typename Compare $>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_1_1detail__sort_af5a02e7ee5bdc9865f19946e829dff5e}{stable\+\_\+sort}} (Random\+Access\+It, const Random\+Access\+It, Compare) -\/$>$ void \item {\footnotesize template$<$typename Random\+Access\+It , typename Compare , std\+::size\+\_\+t small\+\_\+size$>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_1_1detail__sort_a00851154e70e649ffb1972b0cb461199}{merge\+\_\+sort}} (Random\+Access\+It begin, const Random\+Access\+It end, Compare cmp) -\/$>$ void \item {\footnotesize template$<$typename Random\+Access\+It , typename Compare , std\+::size\+\_\+t small\+\_\+size$>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_1_1detail__sort_a280b17f79cf4bcc871b9eb23de612dba}{heap\+\_\+sort}} (Random\+Access\+It begin, const Random\+Access\+It end, Compare cmp) -\/$>$ void \item {\footnotesize template$<$\mbox{\hyperlink{namespacekblib_1_1detail__sort_ae4569ffb1f5bfbe2b7792cba89647a07}{sort\+\_\+direction}} dir, typename Random\+Access\+It , typename Projection $>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_1_1detail__sort_a0f3e1fc1f2ed59538aa52f01165b5c81}{radix\+\_\+sort\+\_\+i}} (Random\+Access\+It begin, const Random\+Access\+It end, Projection proj) -\/$>$ void \item {\footnotesize template$<$\mbox{\hyperlink{namespacekblib_1_1detail__sort_ae4569ffb1f5bfbe2b7792cba89647a07}{sort\+\_\+direction}} dir, typename Random\+Access\+It , typename Projection $>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_1_1detail__sort_a9c74bbb469dc7a2355b5d62913e9dfd9}{radix\+\_\+sort\+\_\+s}} (Random\+Access\+It begin, const Random\+Access\+It end, Projection proj) -\/$>$ void \item {\footnotesize template$<$std\+::size\+\_\+t size$>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_1_1detail__sort_a2ff494c126d5f8be25c0602e00b5ff2d}{make\+\_\+array\+\_\+for}} (std\+::false\+\_\+type) -\/$>$ \mbox{\hyperlink{structkblib_1_1containing__ptr}{kblib\+::containing\+\_\+ptr}}$<$ std\+::array$<$ std\+::size\+\_\+t, \mbox{\hyperlink{namespacekblib_a0e74aee94f446396c8f8b7bf34b16acb}{size}} $>$ $>$ \item {\footnotesize template$<$std\+::size\+\_\+t size$>$ }\\auto \mbox{\hyperlink{namespacekblib_1_1detail__sort_ad77575019d9733392aebfdbb371d7323}{make\+\_\+array\+\_\+for}} (std\+::true\+\_\+type) -\/$>$ \mbox{\hyperlink{classkblib_1_1heap__value}{kblib\+::heap\+\_\+value}}$<$ std\+::array$<$ std\+::size\+\_\+t, \mbox{\hyperlink{namespacekblib_a0e74aee94f446396c8f8b7bf34b16acb}{size}}+1 $>$ $>$ \item {\footnotesize template$<$\mbox{\hyperlink{namespacekblib_1_1detail__sort_ae4569ffb1f5bfbe2b7792cba89647a07}{sort\+\_\+direction}} dir, typename Random\+Access\+It1 , typename Random\+Access\+It2 , typename Projection $>$ }\\constexpr auto \mbox{\hyperlink{namespacekblib_1_1detail__sort_a0ae455fa600a4399c16b1159b04ec5c9}{counting\+\_\+sort}} (Random\+Access\+It1 begin, const Random\+Access\+It1 end, Random\+Access\+It2 d\+\_\+begin, Projection proj) -\/$>$ void \end{DoxyCompactItemize} \doxysubsection{Enumeration Type Documentation} \mbox{\Hypertarget{namespacekblib_1_1detail__sort_ae4569ffb1f5bfbe2b7792cba89647a07}\label{namespacekblib_1_1detail__sort_ae4569ffb1f5bfbe2b7792cba89647a07}} \index{kblib::detail\_sort@{kblib::detail\_sort}!sort\_direction@{sort\_direction}} \index{sort\_direction@{sort\_direction}!kblib::detail\_sort@{kblib::detail\_sort}} \doxysubsubsection{\texorpdfstring{sort\_direction}{sort\_direction}} {\footnotesize\ttfamily enum class \mbox{\hyperlink{namespacekblib_1_1detail__sort_ae4569ffb1f5bfbe2b7792cba89647a07}{kblib\+::detail\+\_\+sort\+::sort\+\_\+direction}}\hspace{0.3cm}{\ttfamily [strong]}} \begin{DoxyEnumFields}{Enumerator} \raisebox{\heightof{T}}[0pt][0pt]{\index{ascending@{ascending}!kblib::detail\_sort@{kblib::detail\_sort}}\index{kblib::detail\_sort@{kblib::detail\_sort}!ascending@{ascending}}}\mbox{\Hypertarget{namespacekblib_1_1detail__sort_ae4569ffb1f5bfbe2b7792cba89647a07a9c9ab624360885fcf93b7643c93b6748}\label{namespacekblib_1_1detail__sort_ae4569ffb1f5bfbe2b7792cba89647a07a9c9ab624360885fcf93b7643c93b6748}} ascending&\\ \hline \raisebox{\heightof{T}}[0pt][0pt]{\index{descending@{descending}!kblib::detail\_sort@{kblib::detail\_sort}}\index{kblib::detail\_sort@{kblib::detail\_sort}!descending@{descending}}}\mbox{\Hypertarget{namespacekblib_1_1detail__sort_ae4569ffb1f5bfbe2b7792cba89647a07ab19e9805fd7727c52ca04dfa3d24a2e5}\label{namespacekblib_1_1detail__sort_ae4569ffb1f5bfbe2b7792cba89647a07ab19e9805fd7727c52ca04dfa3d24a2e5}} descending&\\ \hline \end{DoxyEnumFields} Definition at line \mbox{\hyperlink{sort_8h_source_l00394}{394}} of file \mbox{\hyperlink{sort_8h_source}{sort.\+h}}. \doxysubsection{Function Documentation} \mbox{\Hypertarget{namespacekblib_1_1detail__sort_a0ae455fa600a4399c16b1159b04ec5c9}\label{namespacekblib_1_1detail__sort_a0ae455fa600a4399c16b1159b04ec5c9}} \index{kblib::detail\_sort@{kblib::detail\_sort}!counting\_sort@{counting\_sort}} \index{counting\_sort@{counting\_sort}!kblib::detail\_sort@{kblib::detail\_sort}} \doxysubsubsection{\texorpdfstring{counting\_sort()}{counting\_sort()}} {\footnotesize\ttfamily template$<$\mbox{\hyperlink{namespacekblib_1_1detail__sort_ae4569ffb1f5bfbe2b7792cba89647a07}{sort\+\_\+direction}} dir, typename Random\+Access\+It1 , typename Random\+Access\+It2 , typename Projection $>$ \\ constexpr auto kblib\+::detail\+\_\+sort\+::counting\+\_\+sort (\begin{DoxyParamCaption}\item[{Random\+Access\+It1}]{begin, }\item[{const Random\+Access\+It1}]{end, }\item[{Random\+Access\+It2}]{d\+\_\+begin, }\item[{Projection}]{proj }\end{DoxyParamCaption}) -\/$>$ void \hspace{0.3cm}{\ttfamily [constexpr]}} Definition at line \mbox{\hyperlink{sort_8h_source_l00437}{437}} of file \mbox{\hyperlink{sort_8h_source}{sort.\+h}}. \mbox{\Hypertarget{namespacekblib_1_1detail__sort_a280b17f79cf4bcc871b9eb23de612dba}\label{namespacekblib_1_1detail__sort_a280b17f79cf4bcc871b9eb23de612dba}} \index{kblib::detail\_sort@{kblib::detail\_sort}!heap\_sort@{heap\_sort}} \index{heap\_sort@{heap\_sort}!kblib::detail\_sort@{kblib::detail\_sort}} \doxysubsubsection{\texorpdfstring{heap\_sort()}{heap\_sort()}} {\footnotesize\ttfamily template$<$typename Random\+Access\+It , typename Compare , std\+::size\+\_\+t small\+\_\+size$>$ \\ constexpr auto kblib\+::detail\+\_\+sort\+::heap\+\_\+sort (\begin{DoxyParamCaption}\item[{Random\+Access\+It}]{begin, }\item[{const Random\+Access\+It}]{end, }\item[{Compare}]{cmp }\end{DoxyParamCaption}) -\/$>$ void \hspace{0.3cm}{\ttfamily [constexpr]}} Definition at line \mbox{\hyperlink{sort_8h_source_l00385}{385}} of file \mbox{\hyperlink{sort_8h_source}{sort.\+h}}. \mbox{\Hypertarget{namespacekblib_1_1detail__sort_a2ff494c126d5f8be25c0602e00b5ff2d}\label{namespacekblib_1_1detail__sort_a2ff494c126d5f8be25c0602e00b5ff2d}} \index{kblib::detail\_sort@{kblib::detail\_sort}!make\_array\_for@{make\_array\_for}} \index{make\_array\_for@{make\_array\_for}!kblib::detail\_sort@{kblib::detail\_sort}} \doxysubsubsection{\texorpdfstring{make\_array\_for()}{make\_array\_for()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} {\footnotesize\ttfamily template$<$std\+::size\+\_\+t size$>$ \\ constexpr auto kblib\+::detail\+\_\+sort\+::make\+\_\+array\+\_\+for (\begin{DoxyParamCaption}\item[{std\+::false\+\_\+type}]{ }\end{DoxyParamCaption}) -\/$>$ \mbox{\hyperlink{structkblib_1_1containing__ptr}{kblib\+::containing\+\_\+ptr}}$<$std\+::array$<$std\+::size\+\_\+t, \mbox{\hyperlink{namespacekblib_a0e74aee94f446396c8f8b7bf34b16acb}{size}}$>$$>$ \hspace{0.3cm}{\ttfamily [constexpr]}} Definition at line \mbox{\hyperlink{sort_8h_source_l00425}{425}} of file \mbox{\hyperlink{sort_8h_source}{sort.\+h}}. \mbox{\Hypertarget{namespacekblib_1_1detail__sort_ad77575019d9733392aebfdbb371d7323}\label{namespacekblib_1_1detail__sort_ad77575019d9733392aebfdbb371d7323}} \index{kblib::detail\_sort@{kblib::detail\_sort}!make\_array\_for@{make\_array\_for}} \index{make\_array\_for@{make\_array\_for}!kblib::detail\_sort@{kblib::detail\_sort}} \doxysubsubsection{\texorpdfstring{make\_array\_for()}{make\_array\_for()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} {\footnotesize\ttfamily template$<$std\+::size\+\_\+t size$>$ \\ auto kblib\+::detail\+\_\+sort\+::make\+\_\+array\+\_\+for (\begin{DoxyParamCaption}\item[{std\+::true\+\_\+type}]{ }\end{DoxyParamCaption}) -\/$>$ \mbox{\hyperlink{classkblib_1_1heap__value}{kblib\+::heap\+\_\+value}}$<$std\+::array$<$std\+::size\+\_\+t, \mbox{\hyperlink{namespacekblib_a0e74aee94f446396c8f8b7bf34b16acb}{size}} + 1$>$$>$ } Definition at line \mbox{\hyperlink{sort_8h_source_l00430}{430}} of file \mbox{\hyperlink{sort_8h_source}{sort.\+h}}. \mbox{\Hypertarget{namespacekblib_1_1detail__sort_a00851154e70e649ffb1972b0cb461199}\label{namespacekblib_1_1detail__sort_a00851154e70e649ffb1972b0cb461199}} \index{kblib::detail\_sort@{kblib::detail\_sort}!merge\_sort@{merge\_sort}} \index{merge\_sort@{merge\_sort}!kblib::detail\_sort@{kblib::detail\_sort}} \doxysubsubsection{\texorpdfstring{merge\_sort()}{merge\_sort()}} {\footnotesize\ttfamily template$<$typename Random\+Access\+It , typename Compare , std\+::size\+\_\+t small\+\_\+size$>$ \\ constexpr auto kblib\+::detail\+\_\+sort\+::merge\+\_\+sort (\begin{DoxyParamCaption}\item[{Random\+Access\+It}]{begin, }\item[{const Random\+Access\+It}]{end, }\item[{Compare}]{cmp }\end{DoxyParamCaption}) -\/$>$ void \hspace{0.3cm}{\ttfamily [constexpr]}} Definition at line \mbox{\hyperlink{sort_8h_source_l00370}{370}} of file \mbox{\hyperlink{sort_8h_source}{sort.\+h}}. \mbox{\Hypertarget{namespacekblib_1_1detail__sort_a0f3e1fc1f2ed59538aa52f01165b5c81}\label{namespacekblib_1_1detail__sort_a0f3e1fc1f2ed59538aa52f01165b5c81}} \index{kblib::detail\_sort@{kblib::detail\_sort}!radix\_sort\_i@{radix\_sort\_i}} \index{radix\_sort\_i@{radix\_sort\_i}!kblib::detail\_sort@{kblib::detail\_sort}} \doxysubsubsection{\texorpdfstring{radix\_sort\_i()}{radix\_sort\_i()}} {\footnotesize\ttfamily template$<$\mbox{\hyperlink{namespacekblib_1_1detail__sort_ae4569ffb1f5bfbe2b7792cba89647a07}{sort\+\_\+direction}} dir, typename Random\+Access\+It , typename Projection $>$ \\ constexpr auto kblib\+::detail\+\_\+sort\+::radix\+\_\+sort\+\_\+i (\begin{DoxyParamCaption}\item[{Random\+Access\+It}]{begin, }\item[{const Random\+Access\+It}]{end, }\item[{Projection}]{proj }\end{DoxyParamCaption}) -\/$>$ void \hspace{0.3cm}{\ttfamily [constexpr]}} Definition at line \mbox{\hyperlink{sort_8h_source_l00397}{397}} of file \mbox{\hyperlink{sort_8h_source}{sort.\+h}}. \mbox{\Hypertarget{namespacekblib_1_1detail__sort_a9c74bbb469dc7a2355b5d62913e9dfd9}\label{namespacekblib_1_1detail__sort_a9c74bbb469dc7a2355b5d62913e9dfd9}} \index{kblib::detail\_sort@{kblib::detail\_sort}!radix\_sort\_s@{radix\_sort\_s}} \index{radix\_sort\_s@{radix\_sort\_s}!kblib::detail\_sort@{kblib::detail\_sort}} \doxysubsubsection{\texorpdfstring{radix\_sort\_s()}{radix\_sort\_s()}} {\footnotesize\ttfamily template$<$\mbox{\hyperlink{namespacekblib_1_1detail__sort_ae4569ffb1f5bfbe2b7792cba89647a07}{sort\+\_\+direction}} dir, typename Random\+Access\+It , typename Projection $>$ \\ constexpr auto kblib\+::detail\+\_\+sort\+::radix\+\_\+sort\+\_\+s (\begin{DoxyParamCaption}\item[{Random\+Access\+It}]{begin, }\item[{const Random\+Access\+It}]{end, }\item[{Projection}]{proj }\end{DoxyParamCaption}) -\/$>$ void \hspace{0.3cm}{\ttfamily [constexpr]}} Definition at line \mbox{\hyperlink{sort_8h_source_l00407}{407}} of file \mbox{\hyperlink{sort_8h_source}{sort.\+h}}. \mbox{\Hypertarget{namespacekblib_1_1detail__sort_a3b873e1b1c2c3a4865638d2c904c4c1d}\label{namespacekblib_1_1detail__sort_a3b873e1b1c2c3a4865638d2c904c4c1d}} \index{kblib::detail\_sort@{kblib::detail\_sort}!sort@{sort}} \index{sort@{sort}!kblib::detail\_sort@{kblib::detail\_sort}} \doxysubsubsection{\texorpdfstring{sort()}{sort()}} {\footnotesize\ttfamily template$<$typename Random\+Access\+It , typename Compare $>$ \\ constexpr auto kblib\+::detail\+\_\+sort\+::sort (\begin{DoxyParamCaption}\item[{Random\+Access\+It}]{, }\item[{const}]{Random\+Access\+It, }\item[{Compare}]{ }\end{DoxyParamCaption}) -\/$>$ void \hspace{0.3cm}{\ttfamily [constexpr]}} Definition at line \mbox{\hyperlink{sort_8h_source_l00364}{364}} of file \mbox{\hyperlink{sort_8h_source}{sort.\+h}}. \mbox{\Hypertarget{namespacekblib_1_1detail__sort_af5a02e7ee5bdc9865f19946e829dff5e}\label{namespacekblib_1_1detail__sort_af5a02e7ee5bdc9865f19946e829dff5e}} \index{kblib::detail\_sort@{kblib::detail\_sort}!stable\_sort@{stable\_sort}} \index{stable\_sort@{stable\_sort}!kblib::detail\_sort@{kblib::detail\_sort}} \doxysubsubsection{\texorpdfstring{stable\_sort()}{stable\_sort()}} {\footnotesize\ttfamily template$<$typename Random\+Access\+It , typename Compare $>$ \\ constexpr auto kblib\+::detail\+\_\+sort\+::stable\+\_\+sort (\begin{DoxyParamCaption}\item[{Random\+Access\+It}]{, }\item[{const}]{Random\+Access\+It, }\item[{Compare}]{ }\end{DoxyParamCaption}) -\/$>$ void \hspace{0.3cm}{\ttfamily [constexpr]}} Definition at line \mbox{\hyperlink{sort_8h_source_l00366}{366}} of file \mbox{\hyperlink{sort_8h_source}{sort.\+h}}.