Defines methods to manipulate generic collections.
box
objects named box_collection
. Each box
has height
, length
, and width
properties, which are used to define equality. Equality can be defined as all dimensions being the same or the volume being the same. The box
class implements the xtd::iequatable <type_t> interface to define the default equality as the dimensions being the same.The box_collection
class implements the xtd::collections::generic::icollection::contains method to use the default equality to determine whether a box
is in the collection. This method is used by the xtd::collections::generic::icollection::add method so that each box
added to the collection has a unique set of dimensions. The box_collection
class also provides an overload of the xtd::collections::generic::icollection::contains method that takes a specified xtd::collections::generic::iequality_comparer <type_t> interface, such as b
ox_same_dimensionsand
box_same_volume` classes in the example.
This example also implements an xtd::collections::generic::ienumerator <type_t> interface for the box_collection
class so that the collection can be enumerated.
Public Aliases | |
using | value_type = typename xtd::collections::generic::ienumerable< type_t >::value_type |
Represents the xtd::collections::generic::icollection value type. | |
using | iterator = typename xtd::collections::generic::ienumerable< type_t >::iterator |
Represents the iterator of xtd::collections::generic::ienumerable value type. | |
using | const_iterator = typename xtd::collections::generic::ienumerable< type_t >::const_iterator |
Represents the const iterator of xtd::collections::generic::ienumerable value type. | |
Public Properties | |
virtual xtd::size | count () const noexcept=0 |
Gets the number of elements contained in the xtd::collections::generic::icollection <type_t>. | |
virtual bool | is_read_only () const noexcept=0 |
Gets a value indicating whether the xtd::collections::generic::icollection <type_t> is read-only. | |
virtual bool | is_synchronized () const noexcept=0 |
Gets a value indicating whether access to the xtd::collections::generic::icollection <type_t> is synchronized (thread safe). | |
virtual const xtd::object & | sync_root () const noexcept=0 |
Gets an object that can be used to synchronize access to the the xtd::collections::generic::icollection <type_t>. | |
Public Methods | |
virtual void | add (const type_t &item)=0 |
Adds an item to the xtd::collections::generic::icollection <type_t>. | |
virtual void | clear ()=0 |
Removes all items from the xtd::collections::generic::icollection <type_t>. | |
virtual bool | contains (const type_t &item) const noexcept=0 |
Determines whether the xtd::collections::generic::icollection <type_t> contains a specific value. | |
virtual void | copy_to (xtd::array< type_t > &array, xtd::size array_index) const =0 |
Copies the elements of the xtd::collections::generic::icollection <type_t> to an xtd::array, starting at a particular xtd::array index. | |
virtual bool | remove (const type_t &item)=0 |
Removes the first occurrence of a specific object from the xtd::collections::generic::icollection <type_t>. | |
Additional Inherited Members | |
![]() | |
using | value_type = type_t |
Represents the xtd::collections::generic::ienumerable value type. | |
using | iterator = typename xtd::collections::generic::extensions::enumerable_iterators< type_t, xtd::collections::generic::ienumerable< type_t > >::iterator |
Represents the iterator of xtd::collections::generic::ienumerable value type. | |
using | const_iterator = typename xtd::collections::generic::extensions::enumerable_iterators< type_t, xtd::collections::generic::ienumerable< type_t > >::const_iterator |
Represents the const iterator of xtd::collections::generic::ienumerable value type. | |
![]() | |
using | iterator = enumerable_iterator |
Represents the iterator of enumarable value type. | |
using | const_iterator = const enumerable_iterator |
Represents the const iterator of enumarable value type. | |
![]() | |
using | enumerable_type = ienumerable< type_t > |
Represents the ienumerable enumerable type. | |
using | source_type = type_t |
Represents the ienumerable source type. | |
using | ienumerable = typename xtd::linq::enumerable::ienumerable< type_t > |
Represents the ienumerable value type. | |
using | list = typename xtd::linq::enumerable::list< type_t > |
Represents the list value type. | |
![]() | |
virtual xtd::collections::generic::enumerator< type_t > | get_enumerator () const =0 |
Returns an enumerator that iterates through a collection. | |
![]() | |
virtual const_iterator | begin () const |
Returns an iterator to the first element of the enumarable. | |
virtual iterator | begin () |
Returns an iterator to the first element of the enumarable. | |
virtual const_iterator | cbegin () const |
Returns an iterator to the first element of the enumarable. | |
virtual const_iterator | cend () const |
Returns an iterator to the element following the last element of the enumarable. | |
virtual const_iterator | end () const |
Returns an iterator to the element following the last element of the enumarable. | |
virtual iterator | end () |
Returns an iterator to the element following the last element of the enumarable. | |
![]() | |
type_t | aggregate (const std::function< type_t(const type_t &, const type_t &)> &func) const |
Applies an accumulator function over a sequence. | |
type_t | aggregate (const type_t &seed, const std::function< type_t(const type_t &, const type_t &)> &func) const |
Applies an accumulator function over a sequence. The specified seed value is used as the initial accumulator value. | |
accumulate_t | aggregate (const accumulate_t &seed, const std::function< accumulate_t(const type_t &, const accumulate_t &)> &func) const |
Applies an accumulator function over a sequence. The specified seed value is used as the initial accumulator value. | |
type_t | aggregate (const type_t &seed, const std::function< type_t(const type_t &, const type_t &)> &func, const std::function< type_t(const type_t &)> &result_selector) const |
Applies an accumulator function over a sequence. The specified seed value is used as the initial accumulator value, and the specified function is used to select the result value. | |
result_t | aggregate (const accumulate_t &seed, const std::function< accumulate_t(const type_t &, const accumulate_t &)> &func, const std::function< result_t(const accumulate_t &)> &result_selector) const |
Applies an accumulator function over a sequence. The specified seed value is used as the initial accumulator value, and the specified function is used to select the result value. | |
bool | all (const std::function< bool(const type_t &)> &predicate) const |
Determines whether all elements of a sequence satisfy a condition. | |
bool | any () const noexcept |
Determines whether a sequence contains any elements. | |
bool | any (const std::function< bool(const type_t &)> &predicate) const |
Determines whether any element of a sequence satisfies a condition. | |
const ienumerable< type_t > & | append (const type_t &element) const noexcept |
Appends a value to the end of the sequence. | |
const ienumerable< type_t > & | as_enumerable () const noexcept |
Returns the input typed as xtd::collections::generic::ienumerable <type_t>. | |
auto | average () const noexcept |
Computes the average of a sequence of source_t values. | |
const ienumerable< result_t > & | cast () const noexcept |
Casts the elements of an xtd::collections::generic::ienumerable to the specified type. | |
const ienumerable< xtd::array< type_t > > & | chunk (size_t size) const |
Splits the elements of a sequence into chunks of size at most size. | |
const ienumerable< type_t > & | concat (const ienumerable< type_t > &second) const noexcept |
Concatenates two sequences. | |
bool | contains (const type_t &value) const noexcept |
Determines whether a sequence contains a specified element by using the default equality comparer. | |
bool | contains (const type_t &value, const xtd::collections::generic::iequality_comparer< type_t > &comparer) const noexcept |
Determines whether a sequence contains a specified element by using a specified equality comparer. | |
size_t | count () const noexcept |
Returns the number of elements in current sequence. | |
size_t | count (const std::function< bool(const type_t &)> &predicate) const noexcept |
Returns a number that represents how many elements in the specified sequence satisfy a condition. | |
const ienumerable< key_value_pair< key_t, xtd::size > > & | count_by (const std::function< key_t(const type_t &)> &key_selector) const noexcept |
Returns the count of elements in the current sequence grouped by key. | |
const ienumerable< key_value_pair< key_t, xtd::size > > & | count_by (const std::function< key_t(const type_t &)> &key_selector, const iequality_comparer< key_t > &key_comparer) const noexcept |
Returns the count of elements in the current sequence grouped by key. | |
const ienumerable< type_t > & | default_if_empty () const noexcept |
Returns the elements of the specified sequence or the type parameter's default value in a singleton collection if the current sequence is empty. | |
const ienumerable< type_t > & | default_if_empty (const type_t &default_value) const noexcept |
Returns the elements of the specified sequence or the specified value in a singleton collection if the current sequence is empty. | |
type_t | first_or_default (const std::function< bool(const type_t &)> &predicate, const type_t &default_value) const noexcept |
Returns the first element of the sequence that satisfies a condition, or a specified default value if no such element is found. | |
type_t | first_or_default (const std::function< bool(const type_t &)> &predicate) const noexcept |
Returns the first element of the sequence that satisfies a condition or a default value if no such element is found. | |
type_t | first_or_default (const type_t default_value) const noexcept |
Returns the first element of the sequence that satisfies a condition or a default value if no such element is found. | |
type_t | first_or_default () const noexcept |
Returns the first element of the sequence that satisfies a condition or a default value if no such element is found. | |
const ienumerable< result_t > & | select (const std::function< result_t(const type_t &)> &selector) const |
Projects each element of a sequence into a new form. | |
const ienumerable< type_t > & | select (const std::function< type_t(const type_t &)> &selector) const |
Projects each element of a sequence into a new form. | |
const ienumerable< result_t > & | select (const std::function< result_t(const type_t &, size_t index)> &selector) const |
Projects each element of a sequence into a new form by incorporating the element's index. | |
const ienumerable< type_t > & | select (const std::function< type_t(const type_t &, size_t index)> &selector) const |
Projects each element of a sequence into a new form by incorporating the element's index. | |
const list< type_t > & | to_list () const noexcept |
Creates a xtd::collections::generic::list <type_t> from an xtd::collections::generic::ienumerable <type_t>. | |
const ienumerable< type_t > & | where (const std::function< bool(const type_t &)> &predicate) const |
Filters a sequence of values based on a predicate. | |
const ienumerable< type_t > & | where (const std::function< bool(const type_t &, size_t)> &predicate) const |
Filters a sequence of values based on a predicate. Each element's index is used in the logic of the predicate function. | |
![]() | |
virtual icollection< type_t > & | operator<< (const type_t &item) |
The shift left operator adds an item to the xtd::collections::generic::icollection <type_t>. | |
virtual icollection< type_t > & | operator>> (const type_t &item) |
The shift right operator removes tthe first occurrence of a specific object from the xtd::collections::generic::icollection <type_t>. | |
![]() | |
static target_collection_t::const_iterator | to_iterator (typename source_collection_t::const_iterator &value, const source_collection_t &source_collection, const target_collection_t &target_collection) noexcept |
Converts source iterator to target iterator. | |
static target_collection_t::iterator | to_iterator (typename source_collection_t::iterator &value, const source_collection_t &source_collection, const target_collection_t &target_collection) noexcept |
Converts source iterator to target iterator. | |
static target_collection_t::const_iterator | to_iterator (typename source_collection_t::const_iterator &value, source_collection_t &source_collection, target_collection_t &target_collection) noexcept |
Converts source iterator to target iterator. | |
static target_collection_t::iterator | to_iterator (typename source_collection_t::iterator &value, source_collection_t &source_collection, target_collection_t &target_collection) noexcept |
Converts source iterator to target iterator. | |
using xtd::collections::generic::icollection< type_t >::value_type = typename xtd::collections::generic::ienumerable<type_t>::value_type |
Represents the xtd::collections::generic::icollection value type.
using xtd::collections::generic::icollection< type_t >::iterator = typename xtd::collections::generic::ienumerable<type_t>::iterator |
Represents the iterator of xtd::collections::generic::ienumerable value type.
using xtd::collections::generic::icollection< type_t >::const_iterator = typename xtd::collections::generic::ienumerable<type_t>::const_iterator |
Represents the const iterator of xtd::collections::generic::ienumerable value type.
|
pure virtualnoexcept |
Gets the number of elements contained in the xtd::collections::generic::icollection <type_t>.
Implemented in xtd::basic_array< type_t, allocator_t >, xtd::basic_array< byte, allocator_t >, xtd::basic_array< type_t, allocator_t >, xtd::basic_array< value_type, allocator_t >, xtd::basic_array< xtd::byte, allocator_t >, xtd::basic_array< xtd::drawing::imaging::encoder_parameter, allocator_t >, xtd::basic_array< xtd::uint16, allocator_t >, xtd::collections::bit_array, xtd::collections::generic::dictionary< key_t, value_t, hasher_t, equator_t, allocator_t >, xtd::collections::generic::list< type_t, allocator_t >, xtd::collections::generic::list< byte >, xtd::collections::generic::list< int32 >, xtd::collections::generic::list< xtd::byte >, xtd::collections::generic::list< xtd::drawing::color >, and xtd::collections::object_model::read_only_collection< type_t >.
|
pure virtualnoexcept |
Gets a value indicating whether the xtd::collections::generic::icollection <type_t> is read-only.
true
if the xtd::collections::generic::icollection <type_t> is read-only; otherwise, false
. true
, even though individual array elements can be modified. Implemented in xtd::basic_array< type_t, allocator_t >, xtd::basic_array< byte, allocator_t >, xtd::basic_array< type_t, allocator_t >, xtd::basic_array< value_type, allocator_t >, xtd::basic_array< xtd::byte, allocator_t >, xtd::basic_array< xtd::drawing::imaging::encoder_parameter, allocator_t >, xtd::basic_array< xtd::uint16, allocator_t >, xtd::collections::bit_array, xtd::collections::generic::dictionary< key_t, value_t, hasher_t, equator_t, allocator_t >, xtd::collections::generic::list< type_t, allocator_t >, xtd::collections::generic::list< byte >, xtd::collections::generic::list< int32 >, xtd::collections::generic::list< xtd::byte >, and xtd::collections::generic::list< xtd::drawing::color >.
|
pure virtualnoexcept |
Gets a value indicating whether access to the xtd::collections::generic::icollection <type_t> is synchronized (thread safe).
true
if access to the xtd::collections::generic::icollection <type_t> is synchronized (thread safe); otherwise, false
. synchronized
method, which provides a synchronized wrapper around the underlying collection. Implemented in xtd::basic_array< type_t, allocator_t >, xtd::basic_array< byte, allocator_t >, xtd::basic_array< type_t, allocator_t >, xtd::basic_array< value_type, allocator_t >, xtd::basic_array< xtd::byte, allocator_t >, xtd::basic_array< xtd::drawing::imaging::encoder_parameter, allocator_t >, xtd::basic_array< xtd::uint16, allocator_t >, xtd::collections::bit_array, xtd::collections::generic::dictionary< key_t, value_t, hasher_t, equator_t, allocator_t >, xtd::collections::generic::list< type_t, allocator_t >, xtd::collections::generic::list< byte >, xtd::collections::generic::list< int32 >, xtd::collections::generic::list< xtd::byte >, and xtd::collections::generic::list< xtd::drawing::color >.
|
pure virtualnoexcept |
Gets an object that can be used to synchronize access to the the xtd::collections::generic::icollection <type_t>.
sync_root
property. synchronized
method, which provides a synchronized wrapper around the underlying collection. However, derived classes can provide their own synchronized version of the collection using the xtd::collections::generic::icollection::sync_root property. The synchronizing code must perform operations on the xtd::collections::generic::icollection::sync_root property of the collection, not directly on the collection. This ensures proper operation of collections that are derived from other objects. Specifically, it maintains proper synchronization with other threads that might be simultaneously modifying the collection instance. synchronized
method on a collection, the expected usage for the xtd::collections::generic::icollection::sync_root looks as follows: Implemented in xtd::basic_array< type_t, allocator_t >, xtd::basic_array< byte, allocator_t >, xtd::basic_array< type_t, allocator_t >, xtd::basic_array< value_type, allocator_t >, xtd::basic_array< xtd::byte, allocator_t >, xtd::basic_array< xtd::drawing::imaging::encoder_parameter, allocator_t >, xtd::basic_array< xtd::uint16, allocator_t >, xtd::collections::bit_array, xtd::collections::generic::dictionary< key_t, value_t, hasher_t, equator_t, allocator_t >, xtd::collections::generic::list< type_t, allocator_t >, xtd::collections::generic::list< byte >, xtd::collections::generic::list< int32 >, xtd::collections::generic::list< xtd::byte >, xtd::collections::generic::list< xtd::drawing::color >, and xtd::collections::object_model::read_only_collection< type_t >.
|
pure virtual |
Adds an item to the xtd::collections::generic::icollection <type_t>.
item | The object to add to the xtd::collections::generic::icollection <type_t>. |
xtd::not_supported_exception | The xtd::collections::generic::icollection <type_t> is read-only. |
Implemented in xtd::collections::generic::iset< type_t >, and xtd::collections::generic::list< type_t, allocator_t >.
|
pure virtual |
Removes all items from the xtd::collections::generic::icollection <type_t>.
xtd::not_supported_exception | The xtd::collections::generic::icollection <type_t> is read-only. |
Implemented in xtd::collections::generic::dictionary< key_t, value_t, hasher_t, equator_t, allocator_t >, xtd::collections::generic::list< type_t, allocator_t >, xtd::collections::generic::list< byte >, xtd::collections::generic::list< int32 >, xtd::collections::generic::list< xtd::byte >, and xtd::collections::generic::list< xtd::drawing::color >.
|
pure virtualnoexcept |
Determines whether the xtd::collections::generic::icollection <type_t> contains a specific value.
item | The object to locate in the xtd::collections::generic::icollection <type_t>. |
true
if item is found in the xtd::collections::generic::icollection <type_t>; otherwise, false
. Implemented in xtd::collections::object_model::read_only_collection< type_t >, xtd::basic_array< type_t, allocator_t >, xtd::basic_array< type_t, allocator_t >, and xtd::collections::generic::list< type_t, allocator_t >.
|
pure virtual |
Copies the elements of the xtd::collections::generic::icollection <type_t> to an xtd::array, starting at a particular xtd::array index.
array | The one-dimensional xtd::array that is the destination of the elements copied from xtd::collections::generic::icollection <type_t>. The xtd::array must have zero-based indexing. |
array_index | The zero-based index in array at which copying begins. |
xtd::argument_exception | The number of elements in the source xtd::collections::generic::icollection <type_t> is greater than the available space from `array_index` to the end of the destination `array`. |
Implemented in xtd::collections::bit_array, xtd::collections::generic::list< type_t, allocator_t >, xtd::array< type_t, 1, allocator_t >, xtd::basic_array< type_t, allocator_t >, xtd::basic_array< type_t, allocator_t >, and xtd::collections::object_model::read_only_collection< type_t >.
|
pure virtual |
Removes the first occurrence of a specific object from the xtd::collections::generic::icollection <type_t>.
item | The object to remove from the xtd::collections::generic::icollection <type_t>. |
true
if item was successfully removed from the xtd::collections::generic::icollection <type_t>; otherwise, false
. This method also returns false
if item is not found in the original xtd::collections::generic::icollection <type_t>. xtd::not_supported_exception | The xtd::collections::generic::icollection <type_t> is read-only. |
Implemented in xtd::collections::generic::list< type_t, allocator_t >.