BaseSort Manual

内容表

关于

maxon::BaseSort is a class template that allows to sort data in arrays and to search in sorted arrays. For a default implementation handling simple data types see maxon::SimpleSort .

注意
另请参阅 SortedArray .

创建

A new sorting class is created by implementing a custom class based on maxon::BaseSort . This custom class may implement:

  • LessThan (): For sorting elements in an array.
  • IsEqual (): For finding elements in an array.

Further flags that can be set are:

排序

An instance of the custom sorting class can be used to sort the elements stored in a maxon::BaseArray .

// This example defines a BaseSort class for a simple data type // and applies it to a BaseArray.

// custom BaseSort based class to sort integer values class IntegerSort : public maxon::BaseSort <IntegerSort, maxon::BASESORTFLAGS::MOVEANDCOPYOBJECTS> { public : static inline Bool LessThan ( maxon::Int a, maxon::Int b) { return a < b; } };

// prepare array maxon::BaseArray<maxon::Int> numbers; numbers. Resize (count) iferr_return ;

// custom function to fill the array with random values FillWithRandomNumbers(numbers);

// sort the elements stored in the array IntegerSort sort; sort.Sort(numbers);

// check result for ( const maxon::Int & number : numbers) DiagnosticOutput ( "Number: @" , number);

Searching

To find elements in the given array, the array must be sorted. The custom sorting class must implement both LessThan () and IsEqual ().

// This example defines a BaseSort class for a custom data type // and uses it to sort and search in a BaseArray.

// custom BaseSort based class to sort CustomDate data. // it also allows to compare maxon::Int with CustomDate. class DateSort : public maxon::BaseSort <DateSort> { public : // compare CustomDate with CustomDate

static inline Bool LessThan (CustomDate key, CustomDate element) { if (key.year > element.year) return false ; if (key.year < element.year) return true ; if (key.month > element.month) return false ; if (key.month < element.month) return true ; if (key.day >= element.day) return false ; return true ; } static inline Bool IsEqual (CustomDate key, CustomDate element) { if (key.year != element.year) return false ; if (key.month != element.month) return false ; if (key.day != element.day) return false ; return true ; }

// compare maxon::Int with CustomDate static inline Bool LessThan ( maxon::Int key, CustomDate element) { return key < element.year; } static inline Bool IsEqual ( maxon::Int key, CustomDate element) { return key == element.year; } };

// create data maxon::BaseArray<CustomDate> dates; dates. Resize (count) iferr_return ;

// custom function to fill the array with random dates FillWithRandomDates(dates);

// sort array DateSort sort; sort.Sort(dates);

// search in the array const CustomDate* const date = sort.Find(2000, dates); if (date) DiagnosticOutput ( "@:@:@" , date->year, date->month, date->day); const maxon::Int index = sort.FindIndex(2000, dates. Begin (), dates. GetCount ()); if (index > 0) DiagnosticOutput ( "Index: @" , index);

// new element CustomDate newDate; newDate.year = 1970; newDate.month = 1; newDate.day = 1;

// insert new element maxon::Int insertionIndex; sort.FindInsertionIndex(newDate, dates, insertionIndex); dates. Insert (insertionIndex, newDate) iferr_return ;

延伸阅读

maxon::IsEqual
MAXON_ATTRIBUTE_FORCE_INLINE Bool IsEqual(PREDICATE &&predicate, const T1 &a, const T2 &b)
定义: collection.h:102
maxon::LessThan
Bool LessThan(UInt a1, UInt a2, UInt b1, UInt b2)
定义: integer.h:151
maxon::BaseArray::Resize
ResultMem Resize(Int newCnt, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::DEFAULT)
定义: basearray.h:1077
iferr_return
#define iferr_return
定义: resultbase.h:1434
maxon::BaseArray
定义: basearray.h:366
DiagnosticOutput
#define DiagnosticOutput(formatString,...)
定义: debugdiagnostics.h:166
maxon::BaseArray::GetCount
MAXON_ATTRIBUTE_FORCE_INLINE Int GetCount() const
定义: basearray.h:527
maxon::Int
Int64 Int
signed 32/64 bit int, size depends on the platform
定义: apibase.h:184
maxon::BaseArray::Begin
MAXON_ATTRIBUTE_FORCE_INLINE ConstIterator Begin() const
定义: basearray.h:1332
maxon::BaseSort
定义: sort.h:175
maxon::BaseArray::Insert
MAXON_ATTRIBUTE_FORCE_INLINE ResultRef< T > Insert(Int position)
定义: basearray.h:694
Bool
maxon::Bool Bool
定义: ge_sys_math.h:53

Copyright  © 2014-2025 乐数软件    

工业和信息化部: 粤ICP备14079481号-1