sort overloads

Synopses

Declared in <bdlb_topologicalsortutil.h>

Sort the elements of NODE_TYPE in topological order determined by the specified relations and load the resulting linear ordered set to the specified result. If the sort is unsuccessful, load the elements that have not been ordered to the specified unsorted list. The input relations are provided as pairs of the form (U, V) where U precedes V in the output. Return false if sort fails due to a cycle in the input else return true if sort successful. Note that even if the method returns false, result may contain a subset of elements in the right topological order, essentially elements that the routine was able to sort before the cycle was discovered and unsorted will contain the elements that the routine was unable to sort.

template<class NODE_TYPE>
static
bool
sort(
    bsl::vector<NODE_TYPE>* result,
    bsl::vector<NODE_TYPE>* unsorted,
    bsl::vector<bsl::pair<NODE_TYPE, NODE_TYPE>> const& relations);

Sort the input elements in topological order and write the resulting linear ordered set into the specified resultOutIter. If the sort is unsuccessful (the input is not an acyclic directed graph) write the elements that have not been sorted to the specified unsortedOutIter output. The input elements are provided as a sequence of (conceptual or physical) pairs between the specified relationsBegin and relationsEnd of the form (U, V), where U and V are nodes, and U precedes V in the output. Return true on success, and false if the sort fails due to a cycle in the input. The type bsl::iterator_traits<INPUT_ITER>::value_type must either be bsl or std::pair where the first_type and second_type are the same as bsl::iterator_traits<OUTPUT_ITER>::value_type or TopologicalSortUtilEdgeTraits must be specialized for the type, i.e., the supplied bsl::iterator_traits<INPUT_ITER>::value_type must support the following syntax: ` typedef typename bsl::iterator_traits<INPUT_ITER>::value_type IterValue; typedef typename bsl::iterator_traits<RESULT_ITER>::value_type ResultValue;

template<
    class INPUT_ITER,
    class OUTPUT_ITER,
    class UNSORTED_OUTPUT_ITER>
static
bool
sort(
    INPUT_ITER relationsBegin,
    INPUT_ITER relationsEnd,
    OUTPUT_ITER resultOutIter,
    UNSORTED_OUTPUT_ITER unsortedOutIter);

Created with MrDocs