libzed 1.9.9
A general-purpose library for quick and simple data manipulation.
 
Loading...
Searching...
No Matches
z::core::sortedArray< T > Class Template Reference

An extension of the core::array class which attempts to keep all data sorted. More...

#include <sortedArray.hpp>

Inheritance diagram for z::core::sortedArray< T >:
z::core::array< T > z::core::sizable z::core::arrayLike< const T &, T * > z::core::indexable< T > z::core::iterable< ITER > z::core::sortedRefArray< zstring * > z::core::sortedRefArray< T > z::util::dictionary

Public Member Functions

 sortedArray ()
 Default constructor.
 
template<typename... Args>
 sortedArray (const T &arg1, const Args &...args)
 List-initialized constructor.
 
virtual int add (const T &object) override
 Add an object to the array.
 
virtual int find (const T &object) const override
 Check if a given object is in the array.
 
virtual int findInsert (const T &object, bool allowDuplicates=true) const
 Find an index where the given object can be inserted while keeping the array sorted.
 
virtual void shuffle () noexcept override
 Shuffle the elements of the array into a random order.
 
virtual void reverse () noexcept override
 Reverse the order of all elements in the array.
 
- Public Member Functions inherited from z::core::array< T >
 array ()
 Default constructor.
 
 array (const array &other)
 Copy constructor.
 
 array (const std::vector< T > &other)
 Copy from std::vector.
 
template<typename... Args>
 array (const T &arg1, const Args &...args)
 List-initialized constructor.
 
 array (const std::initializer_list< T > &other)
 Construct from a generic initializer list.
 
virtual ~array ()
 Destructor.
 
void clear ()
 Clear the data in the array.
 
void increase (int newSize) noexcept
 Increase the space allocated for this array.
 
void add (const array &other) noexcept
 Add another array to this array.
 
int push (const T &object) noexcept
 Add an object to the array.
 
void push (const array &other) noexcept
 Add another array to this array.
 
T pop ()
 Remove the last element from this array.
 
arrayinsert (const T &, int)
 Insert an object into the array.
 
void append (const T &)
 Append an object to the end of the array.
 
arrayremove (int)
 Remove an object from the array.
 
arrayremove (int, int)
 Remove all elements in a subset of the array.
 
arrayreplace (int, int, const T &)
 Replace all objects in the given range with an object.
 
arrayreplace (int, int, const array< T > &)
 Replace all objects in the given range with an array of objects.
 
array subset (int index, int count) const
 Get a contiguous subset of the elements in the array.
 
size_t size () const noexcept override
 Get the size of the array.
 
int length () const noexcept override
 Get the length of the array.
 
Tat (int)
 Function to get the object at the given index.
 
const Tat (int) const override
 Const function to get the object at the given index.
 
const Toperator[] (int index) const override
 Function to get the object at the given index.
 
Toperator[] (int index)
 Function to get the object at the given index.
 
bool contains (const T &object) const noexcept
 Check if a given object is in the array.
 
void sort () noexcept
 Sort the array based on default comparison operator.
 
void sort (std::function< bool(const T &, const T &)> lambda) noexcept
 Sort the array based on an arbitrary function.
 
array sorted () const noexcept
 Sort the array based on default comparison operator.
 
array sorted (std::function< bool(const T &, const T &)> lambda) const noexcept
 Sort the array based on an arbitrary function.
 
array shuffled () const noexcept
 Shuffle the elements of the array into a random order.
 
array reversed () const noexcept
 Reverse the order of all elements in the array.
 
arrayoperator= (const array &other)
 Array assignment operator.
 
arrayoperator= (const std::initializer_list< T > &other)
 Initializer list assignment operator.
 
bool operator== (const array &other) const
 Check whether two arrays' contents are the same.
 
bool operator> (const array &other) const
 Array greater-than operator.
 
bool operator< (const array &other) const
 Array less-than operator.
 
bool operator>= (const array &other) const
 Array greater-than-or-equal operator.
 
bool operator<= (const array &other) const
 Array less-than-or-equal operator.
 
virtual bool operator() (const T &arg1, const T &arg2) const
 Callable operator.
 
bool isValid (int index) const
 Check if an index is within the bounds of the array.
 
arrayswap (int index1, int index2)
 Swap two elements in an array.
 
template<typename U >
array< Umap (std::function< U(const T &)> lambda) const
 Applies a transformation function to each element of the array and returns a new array with the results.
 
array filter (std::function< bool(const T &)> lambda) const
 Filters the array based on a predicate and returns a new array containing the elements that satisfy the predicate.
 
T reduce (const T &defaultValue, std::function< T(const T &, const T &)> lambda) const
 Reduces the array to a single value by applying a binary operation cumulatively to the elements.
 
T randomElement () const
 Get a random element from the array.
 
array randomElements (int count) const noexcept
 Get N random elements from the array.
 
Tbegin () const noexcept override
 Get pointer to the beginning of the array.
 
Tend () const noexcept override
 Get pointer to the end of the array.
 
void save (cereal::JSONOutputArchive &ar) const
 JSON specialization of serialization output.
 
void save (cereal::XMLOutputArchive &ar) const
 XML specialization of serialization output.
 
template<typename archive >
void save (archive &ar) const
 Binary specialization of serialization output.
 
void load (cereal::JSONInputArchive &ar)
 JSON specialization of serialization input.
 
void load (cereal::XMLInputArchive &ar)
 XML specialization of serialization input.
 
template<class archive >
void load (archive &ar)
 Binary specialization of serialization input.
 
- Public Member Functions inherited from z::core::sizable
virtual ~sizable () noexcept
 Virtual destructor.
 
- Public Member Functions inherited from z::core::indexable< T >
virtual ~indexable () noexcept
 Virtual destructor.
 
- Public Member Functions inherited from z::core::iterable< ITER >
virtual ~iterable () noexcept
 Virtual destructor.
 

Additional Inherited Members

- Protected Member Functions inherited from z::core::array< T >
void init (const T &arg1)
 Helper function for single object initialization.
 
template<typename... Args>
void init (const T &arg1, const Args &...args)
 Helper function for brace-enclosed list initialization.
 
virtual bool eq (const T &arg1, const T &arg2) const
 Check if two objects are equal.
 
virtual bool gt (const T &arg1, const T &arg2) const
 Check if one object is greater than another.
 
virtual bool lt (const T &arg1, const T &arg2) const
 Check if one object is less than another.
 
- Protected Attributes inherited from z::core::array< T >
std::vector< Tarray_data
 The data in the array.
 

Detailed Description

template<typename T>
class z::core::sortedArray< T >

An extension of the core::array class which attempts to keep all data sorted.

See also
array
refArray
sortedRefArray

Constructor & Destructor Documentation

◆ sortedArray()

template<typename T >
template<typename... Args>
z::core::sortedArray< T >::sortedArray ( const T arg1,
const Args &...  args 
)
inline

List-initialized constructor.

Constructs the array with an arbitrary number of elements already contained.

Note
All elements will be automatically sorted.
Parameters
arg1initializing data.
argscont. initializing data.

Member Function Documentation

◆ add()

template<typename T >
int z::core::sortedArray< T >::add ( const T object)
overridevirtual

Add an object to the array.

Finds an appropriate location and inserts the object into the array, such that the array remains sorted.

Parameters
objectthe data to add to the array.
Returns
The index where the inserted object now resides.

Reimplemented from z::core::array< T >.

◆ find()

template<typename T >
int z::core::sortedArray< T >::find ( const T object) const
overridevirtual

Check if a given object is in the array.

Locates the desired index using a binary search, as the array is expected to be sorted.

/note The objects this array contains must be trivially comparable, or have operator>() and operator<() defined.

Parameters
objectthe object to search for.
Returns
The first index that the object was found at. -1 if it was not found.

Reimplemented from z::core::array< T >.

◆ findInsert()

template<typename T >
int z::core::sortedArray< T >::findInsert ( const T object,
bool  allowDuplicates = true 
) const
virtual

Find an index where the given object can be inserted while keeping the array sorted.

Locates the desired index using a binary search, as the array is expected to be sorted.

Parameters
objectThe object to search for.
allowDuplicatesWhether to allow multiple identical objects.
Returns
The first index where the object can be inserted.

◆ reverse()

template<typename T >
virtual void z::core::sortedArray< T >::reverse ( )
inlineoverridevirtualnoexcept

Reverse the order of all elements in the array.

Re-Entry: Simultaneous calls to this member function on the same object can cause data races.

Reverses the array in-place, mutating existing values.

Reimplemented from z::core::array< T >.

◆ shuffle()

template<typename T >
virtual void z::core::sortedArray< T >::shuffle ( )
inlineoverridevirtualnoexcept

Shuffle the elements of the array into a random order.

Re-Entry: Simultaneous calls to this member function on the same object can cause data races.

Shuffles the array in-place, mutating existing values.

Reimplemented from z::core::array< T >.


The documentation for this class was generated from the following file: