\hypertarget{struct_k_b_l_i_b___n_s_1_1detail__sort_1_1sort__transform__impl}{}\doxysection{KBLIB\+\_\+\+NS\+::detail\+\_\+sort\+::sort\+\_\+transform\+\_\+impl\texorpdfstring{$<$}{<} Random\+Access\+It, Unary\+Operation, Binary\+Predicate, Sort\+Key, small\+\_\+size, bool, bool, bool, bool \texorpdfstring{$>$}{>} Struct Template Reference}
\label{struct_k_b_l_i_b___n_s_1_1detail__sort_1_1sort__transform__impl}\index{KBLIB\_NS::detail\_sort::sort\_transform\_impl$<$ RandomAccessIt, UnaryOperation, BinaryPredicate, SortKey, small\_size, bool, bool, bool, bool $>$@{KBLIB\_NS::detail\_sort::sort\_transform\_impl$<$ RandomAccessIt, UnaryOperation, BinaryPredicate, SortKey, small\_size, bool, bool, bool, bool $>$}}


Sort data after applying an arbitrary transformation to it. The primary template handles the general case of arbitrary transformation and arbitrary compare predicate.  




{\ttfamily \#include $<$kblib/sort.\+h$>$}

\doxysubsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
static constexpr auto \mbox{\hyperlink{struct_k_b_l_i_b___n_s_1_1detail__sort_1_1sort__transform__impl_a3df5dca11fb9c97ebd7a98280fdd85a5}{inplace}} (Random\+Access\+It begin, const Random\+Access\+It end, Unary\+Operation \&\&\mbox{\hyperlink{namespace_k_b_l_i_b___n_s_a776689bdcc9e3aa8017448393fe85f3a}{transform}}, Binary\+Predicate \&\&compare) -\/$>$ void
\item 
static constexpr auto \mbox{\hyperlink{struct_k_b_l_i_b___n_s_1_1detail__sort_1_1sort__transform__impl_a8b38a4bfa6536447ba9c41a595ff9371}{scratch}} (Random\+Access\+It begin, const Random\+Access\+It end, Unary\+Operation \&\&\mbox{\hyperlink{namespace_k_b_l_i_b___n_s_a776689bdcc9e3aa8017448393fe85f3a}{transform}}, Binary\+Predicate \&\&compare) -\/$>$ void
\item 
{\footnotesize template$<$typename Random\+Access\+It2 $>$ }\\static constexpr auto \mbox{\hyperlink{struct_k_b_l_i_b___n_s_1_1detail__sort_1_1sort__transform__impl_a307134a717f44919c50a186a2dc2543a}{copy}} (Random\+Access\+It begin, const Random\+Access\+It end, Random\+Access\+It2 d\+\_\+begin, Random\+Access\+It2 d\+\_\+end, Unary\+Operation \&\&\mbox{\hyperlink{namespace_k_b_l_i_b___n_s_a776689bdcc9e3aa8017448393fe85f3a}{transform}}, Binary\+Predicate \&\&compare) -\/$>$ void
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
\subsubsection*{template$<$typename Random\+Access\+It, typename Unary\+Operation, typename Binary\+Predicate, typename Sort\+Key, std\+::size\+\_\+t small\+\_\+size = 8, bool = is\+\_\+trivial\+\_\+transformation$<$\+Unary\+Operation$>$\+::value, bool = std\+::is\+\_\+fundamental$<$\+Sort\+Key$>$\+::value, bool = is\+\_\+radix\+\_\+sortable\+\_\+v$<$\+Sort\+Key$>$, bool = std\+::is\+\_\+integral$<$\+Sort\+Key$>$\+::value$>$\newline
struct KBLIB\+\_\+\+NS\+::detail\+\_\+sort\+::sort\+\_\+transform\+\_\+impl$<$ Random\+Access\+It, Unary\+Operation, Binary\+Predicate, Sort\+Key, small\+\_\+size, bool, bool, bool, bool $>$}
Sort data after applying an arbitrary transformation to it. The primary template handles the general case of arbitrary transformation and arbitrary compare predicate. 

Definition at line \mbox{\hyperlink{sort_8h_source_l00471}{471}} of file \mbox{\hyperlink{sort_8h_source}{sort.\+h}}.



\doxysubsection{Member Function Documentation}
\mbox{\Hypertarget{struct_k_b_l_i_b___n_s_1_1detail__sort_1_1sort__transform__impl_a307134a717f44919c50a186a2dc2543a}\label{struct_k_b_l_i_b___n_s_1_1detail__sort_1_1sort__transform__impl_a307134a717f44919c50a186a2dc2543a}} 
\index{KBLIB\_NS::detail\_sort::sort\_transform\_impl$<$ RandomAccessIt, UnaryOperation, BinaryPredicate, SortKey, small\_size, bool, bool, bool, bool $>$@{KBLIB\_NS::detail\_sort::sort\_transform\_impl$<$ RandomAccessIt, UnaryOperation, BinaryPredicate, SortKey, small\_size, bool, bool, bool, bool $>$}!copy@{copy}}
\index{copy@{copy}!KBLIB\_NS::detail\_sort::sort\_transform\_impl$<$ RandomAccessIt, UnaryOperation, BinaryPredicate, SortKey, small\_size, bool, bool, bool, bool $>$@{KBLIB\_NS::detail\_sort::sort\_transform\_impl$<$ RandomAccessIt, UnaryOperation, BinaryPredicate, SortKey, small\_size, bool, bool, bool, bool $>$}}
\doxysubsubsection{\texorpdfstring{copy()}{copy()}}
{\footnotesize\ttfamily template$<$typename Random\+Access\+It , typename Unary\+Operation , typename Binary\+Predicate , typename Sort\+Key , std\+::size\+\_\+t small\+\_\+size = 8, bool  = is\+\_\+trivial\+\_\+transformation$<$\+Unary\+Operation$>$\+::value, bool  = std\+::is\+\_\+fundamental$<$\+Sort\+Key$>$\+::value, bool  = is\+\_\+radix\+\_\+sortable\+\_\+v$<$\+Sort\+Key$>$, bool  = std\+::is\+\_\+integral$<$\+Sort\+Key$>$\+::value$>$ \\
template$<$typename Random\+Access\+It2 $>$ \\
static constexpr auto \mbox{\hyperlink{struct_k_b_l_i_b___n_s_1_1detail__sort_1_1sort__transform__impl}{KBLIB\+\_\+\+NS\+::detail\+\_\+sort\+::sort\+\_\+transform\+\_\+impl}}$<$ Random\+Access\+It, Unary\+Operation, Binary\+Predicate, Sort\+Key, small\+\_\+size, bool, bool, bool, bool $>$\+::copy (\begin{DoxyParamCaption}\item[{Random\+Access\+It}]{begin,  }\item[{const Random\+Access\+It}]{end,  }\item[{Random\+Access\+It2}]{d\+\_\+begin,  }\item[{Random\+Access\+It2}]{d\+\_\+end,  }\item[{Unary\+Operation \&\&}]{transform,  }\item[{Binary\+Predicate \&\&}]{compare }\end{DoxyParamCaption}) -\/$>$ void \hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}, {\ttfamily [constexpr]}}

TODO(killerbee13)\+: write efficent sort\+\_\+transform\+\_\+copy

Definition at line \mbox{\hyperlink{sort_8h_source_l00507}{507}} of file \mbox{\hyperlink{sort_8h_source}{sort.\+h}}.

\mbox{\Hypertarget{struct_k_b_l_i_b___n_s_1_1detail__sort_1_1sort__transform__impl_a3df5dca11fb9c97ebd7a98280fdd85a5}\label{struct_k_b_l_i_b___n_s_1_1detail__sort_1_1sort__transform__impl_a3df5dca11fb9c97ebd7a98280fdd85a5}} 
\index{KBLIB\_NS::detail\_sort::sort\_transform\_impl$<$ RandomAccessIt, UnaryOperation, BinaryPredicate, SortKey, small\_size, bool, bool, bool, bool $>$@{KBLIB\_NS::detail\_sort::sort\_transform\_impl$<$ RandomAccessIt, UnaryOperation, BinaryPredicate, SortKey, small\_size, bool, bool, bool, bool $>$}!inplace@{inplace}}
\index{inplace@{inplace}!KBLIB\_NS::detail\_sort::sort\_transform\_impl$<$ RandomAccessIt, UnaryOperation, BinaryPredicate, SortKey, small\_size, bool, bool, bool, bool $>$@{KBLIB\_NS::detail\_sort::sort\_transform\_impl$<$ RandomAccessIt, UnaryOperation, BinaryPredicate, SortKey, small\_size, bool, bool, bool, bool $>$}}
\doxysubsubsection{\texorpdfstring{inplace()}{inplace()}}
{\footnotesize\ttfamily template$<$typename Random\+Access\+It , typename Unary\+Operation , typename Binary\+Predicate , typename Sort\+Key , std\+::size\+\_\+t small\+\_\+size = 8, bool  = is\+\_\+trivial\+\_\+transformation$<$\+Unary\+Operation$>$\+::value, bool  = std\+::is\+\_\+fundamental$<$\+Sort\+Key$>$\+::value, bool  = is\+\_\+radix\+\_\+sortable\+\_\+v$<$\+Sort\+Key$>$, bool  = std\+::is\+\_\+integral$<$\+Sort\+Key$>$\+::value$>$ \\
static constexpr auto \mbox{\hyperlink{struct_k_b_l_i_b___n_s_1_1detail__sort_1_1sort__transform__impl}{KBLIB\+\_\+\+NS\+::detail\+\_\+sort\+::sort\+\_\+transform\+\_\+impl}}$<$ Random\+Access\+It, Unary\+Operation, Binary\+Predicate, Sort\+Key, small\+\_\+size, bool, bool, bool, bool $>$\+::inplace (\begin{DoxyParamCaption}\item[{Random\+Access\+It}]{begin,  }\item[{const Random\+Access\+It}]{end,  }\item[{Unary\+Operation \&\&}]{transform,  }\item[{Binary\+Predicate \&\&}]{compare }\end{DoxyParamCaption}) -\/$>$ void \hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}, {\ttfamily [constexpr]}}

TODO(killerbee13)\+: write efficient inplace sort\+\_\+transform

Definition at line \mbox{\hyperlink{sort_8h_source_l00472}{472}} of file \mbox{\hyperlink{sort_8h_source}{sort.\+h}}.

\mbox{\Hypertarget{struct_k_b_l_i_b___n_s_1_1detail__sort_1_1sort__transform__impl_a8b38a4bfa6536447ba9c41a595ff9371}\label{struct_k_b_l_i_b___n_s_1_1detail__sort_1_1sort__transform__impl_a8b38a4bfa6536447ba9c41a595ff9371}} 
\index{KBLIB\_NS::detail\_sort::sort\_transform\_impl$<$ RandomAccessIt, UnaryOperation, BinaryPredicate, SortKey, small\_size, bool, bool, bool, bool $>$@{KBLIB\_NS::detail\_sort::sort\_transform\_impl$<$ RandomAccessIt, UnaryOperation, BinaryPredicate, SortKey, small\_size, bool, bool, bool, bool $>$}!scratch@{scratch}}
\index{scratch@{scratch}!KBLIB\_NS::detail\_sort::sort\_transform\_impl$<$ RandomAccessIt, UnaryOperation, BinaryPredicate, SortKey, small\_size, bool, bool, bool, bool $>$@{KBLIB\_NS::detail\_sort::sort\_transform\_impl$<$ RandomAccessIt, UnaryOperation, BinaryPredicate, SortKey, small\_size, bool, bool, bool, bool $>$}}
\doxysubsubsection{\texorpdfstring{scratch()}{scratch()}}
{\footnotesize\ttfamily template$<$typename Random\+Access\+It , typename Unary\+Operation , typename Binary\+Predicate , typename Sort\+Key , std\+::size\+\_\+t small\+\_\+size = 8, bool  = is\+\_\+trivial\+\_\+transformation$<$\+Unary\+Operation$>$\+::value, bool  = std\+::is\+\_\+fundamental$<$\+Sort\+Key$>$\+::value, bool  = is\+\_\+radix\+\_\+sortable\+\_\+v$<$\+Sort\+Key$>$, bool  = std\+::is\+\_\+integral$<$\+Sort\+Key$>$\+::value$>$ \\
static constexpr auto \mbox{\hyperlink{struct_k_b_l_i_b___n_s_1_1detail__sort_1_1sort__transform__impl}{KBLIB\+\_\+\+NS\+::detail\+\_\+sort\+::sort\+\_\+transform\+\_\+impl}}$<$ Random\+Access\+It, Unary\+Operation, Binary\+Predicate, Sort\+Key, small\+\_\+size, bool, bool, bool, bool $>$\+::scratch (\begin{DoxyParamCaption}\item[{Random\+Access\+It}]{begin,  }\item[{const Random\+Access\+It}]{end,  }\item[{Unary\+Operation \&\&}]{transform,  }\item[{Binary\+Predicate \&\&}]{compare }\end{DoxyParamCaption}) -\/$>$ void \hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}, {\ttfamily [constexpr]}}

TODO(killerbee13)\+: write efficient sort\+\_\+transform

Definition at line \mbox{\hyperlink{sort_8h_source_l00489}{489}} of file \mbox{\hyperlink{sort_8h_source}{sort.\+h}}.



The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
kblib/\mbox{\hyperlink{sort_8h}{sort.\+h}}\end{DoxyCompactItemize}
