[#BloombergLP-bdlb-TopologicalSortUtil-sort-04] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bdlb.adoc[bdlb]::xref:BloombergLP/bdlb/TopologicalSortUtil.adoc[TopologicalSortUtil]::sort :relfileprefix: ../../../ :mrdocs: Sort nodes into topological order given edge relations. == Synopsis Declared in `<bdlb_topologicalsortutil.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<class NODE_TYPE> static bool sort( xref:bsl/vector-00d.adoc[bsl::vector<NODE_TYPE>]* result, xref:bsl/vector-00d.adoc[bsl::vector<NODE_TYPE>]* unsorted, xref:bsl/vector-00d.adoc[bsl::vector<bsl::pair<NODE_TYPE, NODE_TYPE>>] const& relations); ---- == Description 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. == Return Value `true` if the sort succeeds, and `false` if a cycle is found == Parameters [cols="1,4"] |=== | Name| Description | *result* | destination for the ordered nodes | *unsorted* | destination for nodes left unsorted on failure | *relations* | directed edges (U, V) where U precedes V |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#