12#define __XTD_CORE_INTERNAL__
14#undef __XTD_CORE_INTERNAL__
83 template<
typename type_t,
typename allocator_t>
136 for (
const auto& value : collection)
137 data_->items.push_back(value);
141 template<xtd::iterable iterable_t>
143 for (
const auto& item :
items)
144 data_->items.push_back(item);
155 data_ = std::move(
list.data_);
170 template <std::input_iterator input_iterator_t>
171 list(input_iterator_t
first, input_iterator_t
last)
requires std::copy_constructible<type_t> {
230 if (value <
capacity()) data_->items.shrink_to_fit();
231 data_->items.reserve(value);
255 [[nodiscard]]
auto count() const noexcept ->
size_type override {
return data_->items.size();}
260 [[nodiscard]]
auto data() noexcept ->
pointer override {
return reinterpret_cast<pointer>(data_->items.data());}
268 [[nodiscard]]
const auto&
items() const noexcept {
return data_->items;}
271 [[nodiscard]]
auto&
items() noexcept {
return data_->items;}
290 auto add(
const type_t& item) ->
void override {
291 if constexpr (std::copy_constructible<type_t>) data_->items.push_back(item);
307 auto add(type_t&& item) ->
void {data_->items.push_back(std::forward<type_t>(item));}
330 template<
typename enumerable_t>
382 auto first = data_->items.begin();
383 auto last = data_->items.begin();
388 if (position != data_->items.end() && !
comparer.
compare(item, *position))
389 return std::distance(data_->items.begin(), position);
390 return ~std::distance(data_->items.begin(), position);
397 auto clear() ->
void override {data_->items.clear();}
402 [[nodiscard]]
auto contains(
const type_t& value)
const noexcept ->
bool override {
413 template<
typename output_t,
typename converter_t>
417 for (
const auto& item :
self_)
418 result.add(apply_converter(item));
440 if constexpr (std::copy_constructible<type_t>)
copy_to(0,
array, array_index,
count());
468 return self_.capacity();
481 [[nodiscard]]
auto equals(
const list& obj)
const noexcept ->
bool override {
482 if (
count() != obj.count())
return false;
499 template<
typename predicate_t>
500 [[nodiscard]]
auto exists(predicate_t match)
const ->
bool {
515 template<
typename predicate_t>
533 template<
typename predicate_t>
536 auto result =
list {};
537 for (
const auto& item :
self_)
547 template<
typename predicate_t>
556 template<
typename predicate_t>
566 template<
typename predicate_t>
586 template<
typename predicate_t>
598 template<
typename predicate_t>
607 template<
typename predicate_t>
617 template<
typename predicate_t>
621 auto end_index = start_index + 1 -
count;
624 if (
index == end_index)
break;
637 template<
typename action_t>
639 auto apply_action = xtd::action<const type_t&> {action};
640 for (
const auto& item :
self_)
647 struct list_enumerator :
public ienumerator<value_type> {
650 [[nodiscard]]
const value_type& current()
const override {
653 return items_[index_];
656 [[nodiscard]]
bool move_next()
override {
658 return ++index_ < items_.count();
661 void reset()
override {
662 version_ = items_.data_->items.version();
721 if constexpr (std::copy_constructible<type_t>) {
723 data_->items.insert(data_->items.begin() +
index, value);
733 data_->items.insert(data_->items.begin() +
index, std::forward<type_t>(value));
749 if (
static_cast<const void*
>(&
enumerable) ==
static_cast<const void*
>(
this)) {
767 data_->items.insert(data_->items.begin() +
index,
items.begin(),
items.end());
771 template<
typename collection_t>
776 if (
static_cast<const void*
>(&
items) ==
static_cast<const void*
>(
this)) {
815 auto remove(
const type_t& item)
noexcept ->
bool override {
833 template<
typename predicate_t>
837 auto iterator = data_->items.begin();
838 while (
iterator != data_->items.end())
852 data_->items.erase(data_->items.begin() +
index);
865 data_->items.erase(data_->items.begin() +
index, data_->items.begin() +
index +
count);
874 if constexpr (std::copy_constructible<type_t>) {
885 if constexpr (std::copy_constructible<type_t>) {
888 data_->items.resize(
count, value);
910 data_->items.increment_version();
911 std::reverse(data_->items.begin() +
index, data_->items.begin() +
index +
count);
1000 data_->items.increment_version();
1001 std::sort(data_->items.begin() +
index, data_->items.begin() +
index +
count, less_comparison);
1087 template<
typename prediacate_t>
1090 for (
const auto& item :
self_)
1107 data_->items = std::move(
other.data_->items);
1113 auto operator =(
const std::initializer_list<type_t>&
items) ->
list&
requires std::copy_constructible<type_t> {
1114 data_->items =
items;
1126 return data_->items[
index];
1134 return data_->items[
index];
1146 auto is_fixed_size() const noexcept ->
bool override {
return false;}
1147 auto is_read_only() const noexcept ->
bool override {
return false;}
1148 auto is_synchronized() const noexcept ->
bool override {
return false;}
1152 xtd::collections::generic::helpers::raw_array<value_type, allocator_t> items;
1153 xtd::object sync_root;
1162 template<
typename type_t>
1165 template<
typename type_t>
1168 template<xtd::iterable iterable_t>
1171 template<
typename type_t>
1174 template<
typename type_t>
1177 template<
typename type_t,
typename allocator_t = helpers::allocator<type_t>>
1180 template<
typename type_t,
typename allocator_t = helpers::allocator<type_t>>
1183 template<
typename type_t>
1186 template<
typename type_t,
typename allocator_t = helpers::allocator<type_t>>
1189 template<
typename input_iterator_t>
1199 template<
typename source_t,
typename enumerable_t>
1205template<xtd::iterable source_t>
1211template<
typename key_t, xtd::iterable source_t, xtd::callable<key_t, xtd::iterable_value_type<source_t>> key_selector_t, xtd::func_callable<
bool, key_t, key_t> key_equater_t>
1213 auto result = list<key_value_pair<key_t, xtd::usize>> {};
1214 auto keys = list<key_t> {};
1221 for (; index <
keys.count(); ++index)
1222 if (key_equater(keys[index], key))
break;
1223 if (index <
keys.count()) result[index] = {key, result[index].value() + 1};
1226 result.add({key, 1});
1230 for (
const auto& item : result)
1234template<xtd::iterable source_t>
1236 auto result = list<xtd::iterable_value_type<source_t>> {};
1239 for (
const auto& item : source)
1240 if (!contains(result, item))
1243 for (
const auto& item : result)
1247template<xtd::iterable source_t>
1249 auto result = list<xtd::iterable_value_type<source_t>> {};
1252 for (
const auto& item : source)
1253 if (!contains(result, item, comparer))
1256 for (
const auto& item : result)
1260template<xtd::iterable source_t, xtd::func_callable<
bool, xtd::iterable_value_type<source_t>, xtd::iterable_value_type<source_t>> equater_t>
1262 auto result = list<xtd::iterable_value_type<source_t>> {};
1265 for (
const auto& item : source)
1266 if (!contains(result, item, equater))
1269 for (
const auto& item : result)
1273template<xtd::iterable source_t>
1275 return as_enumerable(std::forward<source_t>(source));
1279template<xtd::iterable source_t, xtd::func_callable<
bool, xtd::iterable_value_type<source_t>, xtd::iterable_value_type<source_t>> lesser_t>
1281 auto result = list<xtd::iterable_value_type<source_t>> {};
1284 for (
const auto& item : source)
1286 std::sort(result.items().begin(), result.items().end(), lesser);
1287 for (
const auto& item : result)
1291template<
typename key_t, xtd::iterable source_t, xtd::callable<key_t, xtd::iterable_value_type<source_t>> key_selector_t>
1293 auto result = list<xtd::iterable_value_type<source_t>> {};
1294 for (
const auto& item : source)
1296 std::sort(result.items().begin(), result.items().end(), [key_selector](
auto&& a,
auto&& b) {return key_selector(a) < key_selector(b);});
1297 for (
const auto& item : result)
1301template<xtd::iterable source_t, xtd::callable<xtd::iterable_value_type<source_t>, xtd::iterable_value_type<source_t>> key_selector_t>
1303 auto result = list<xtd::iterable_value_type<source_t>> {};
1304 for (
const auto& item : source)
1306 std::sort(result.items().begin(), result.items().end(), [key_selector](
auto&& a,
auto&& b) {return key_selector(a) < key_selector(b);});
1307 for (
const auto& item : result)
1311template<
typename key_t, xtd::iterable source_t, xtd::callable<key_t, xtd::iterable_value_type<source_t>> key_selector_t>
1313 auto result = list<xtd::iterable_value_type<source_t>> {};
1314 for (
const auto& item : source)
1316 std::sort(result.items().begin(), result.items().end(), [key_selector](
auto&& a,
auto&& b) {return key_selector(a) > key_selector(b);});
1317 for (
const auto& item : result)
1321template<xtd::iterable source_t, xtd::callable<xtd::iterable_value_type<source_t>, xtd::iterable_value_type<source_t>> key_selector_t>
1323 auto result = list<xtd::iterable_value_type<source_t>> {};
1324 for (
const auto& item : source)
1326 std::sort(result.items().begin(), result.items().end(), [key_selector](
auto&& a,
auto&& b) {return key_selector(a) > key_selector(b);});
1327 for (
const auto& item : result)
1331template<
typename value_t>
Contains xtd::action delegate.
Contains xtd::collections::generic::helpers::allocator alias.
Provides methods for creating, manipulating, searching, and sorting arrays, thereby serving as the ba...
Definition array.hpp:64
virtual auto length() const noexcept -> size_type
Gets a size that represents the total number of elements in all the dimensions of the array.
Definition basic_array.hpp:122
static auto join(const basic_string &separator, const collection_t &values) noexcept -> basic_string
Definition basic_string.hpp:1241
Provides a base class for implementations of the xtd::collections::generic::icomparer <type_t> generi...
Definition comparer.hpp:33
auto compare(const first_argument_type &x, const second_argument_type &y) const -> result_type override
Compares two entities and returns a value indicating whether one is less than, equal to,...
Definition comparer.hpp:66
static const comparer< xtd::any_object > default_comparer
Definition comparer.hpp:50
Represents an enumerable generator that supports deferred, lazy iteration over a collection of a spec...
Definition enumerable_generator.hpp:45
auto to_list() const -> xtd::collections::generic::list< value_t >
Creates a xtd::collections::generic::list <type_t> from an xtd::collections::generic::ienumerable <ty...
value_t value_type
Represents the ienumerable value type.
Definition enumerable.hpp:40
auto last() const -> value_t
Returns the last element of a sequence.
Definition enumerable.hpp:333
auto first() const -> value_t
Returns the first element of a sequence.
Definition enumerable.hpp:289
internal_base_type base_type
Underlying vector type.
Definition raw_array.hpp:132
Exposes a method that compares two objects.
Definition icomparer.hpp:30
Exposes the enumerator, which supports a simple iteration over a collection of a specified type.
Definition ienumerable.hpp:40
typename xtd::collections::generic::extensions::enumerable_iterators< xtd::any_object, xtd::collections::generic::ienumerable< xtd::any_object > >::iterator iterator
Definition ienumerable.hpp:48
Supports a simple iteration over a generic collection.
Definition ienumerator.hpp:58
Represents a collection of objects that can be individually accessed by index.
Definition ilist.hpp:42
static constexpr xtd::usize npos
Definition ilist.hpp:55
virtual auto is_fixed_size() const noexcept -> bool=0
Gets a value indicating whether the xtd::collections::generic::ilist <type_t> has a fixed size.
virtual auto is_synchronized() const noexcept -> bool=0
Gets a value indicating whether access to the xtd::collections::generic::icollection <type_t> is sync...
virtual auto count() const noexcept -> xtd::usize=0
Gets the number of elements contained in the xtd::collections::generic::icollection <type_t>.
virtual auto sync_root() const noexcept -> const xtd::object &=0
Gets an object that can be used to synchronize access to the the xtd::collections::generic::icollecti...
virtual auto is_read_only() const noexcept -> bool=0
Gets a value indicating whether the xtd::collections::generic::icollection <type_t> is read-only.
Represents a strongly typed list of objects that can be accessed by index. Provides methods to search...
Definition list.hpp:84
auto last_index_of(const type_t &value, size_type index, size_type count) const -> size_type
Determines the last index of a specific item in the xtd::collections::generic::list <type_t>.
Definition list.hpp:806
auto to_array() const noexcept -> xtd::array< value_type >
Copies the elements of the xtd::collections::generic::list <type_t> to a new array.
Definition list.hpp:1048
auto count() const noexcept -> size_type override
Gets the number of elements contained in the xtd::collections::generic::list <type_t>.
Definition list.hpp:255
list(std::initializer_list< type_t > items)
Constructs the container with the contents of the specified initializer list, and allocator.
Definition list.hpp:166
auto data() const noexcept -> const_pointer override
Returns pointer to the underlying array serving as element storage.
Definition list.hpp:264
virtual auto resize(size_type count) -> void
Resizes the container to contain count elements, does nothing if count == size().
Definition list.hpp:873
auto operator=(const list &other) -> list &=default
Copy assignment operator. Replaces the contents with a copy of the contents of other.
auto index_of(const type_t &value) const noexcept -> size_type override
Determines the index of a specific item in the xtd::collections::generic::list <type_t>.
Definition list.hpp:695
auto equals(const object &obj) const noexcept -> bool override
Determines whether the specified object is equal to the current object.
Definition list.hpp:477
auto find_index(xtd::usize start_index, xtd::usize count, predicate_t match) const -> xtd::usize
Searches for an element that matches the conditions defined by the specified predicate,...
Definition list.hpp:567
auto sort(xtd::callable< bool, const type_t &, const type_t & > auto &&less_comparison) -> list< type_t > &
Sorts the elements in the entire xtd::collections::generic::list <type_t> using the specified xtd::ca...
Definition list.hpp:956
auto operator[](size_type index) const -> const_reference override
Returns a reference to the element at specified location index.
Definition list.hpp:1124
auto insert(size_type index, const type_t &value) -> void override
Determines the index of a specific item in the xtd::collections::generic::list <type_t>.
Definition list.hpp:720
list(base_type &&list)
Move constructor with specified base type list.
Definition list.hpp:163
auto sort() -> list< type_t > &
Sorts the elements in the entire xtd::collections::generic::list <type_t> using the default comparer.
Definition list.hpp:946
auto find_last_index(xtd::usize start_index, xtd::usize count, predicate_t match) const -> xtd::usize
Searches for an element that matches the conditions defined by the specified predicate,...
Definition list.hpp:618
const value_type * const_pointer
Definition list.hpp:104
const base_type const_base_type
Definition list.hpp:94
auto last_index_of(const type_t &value) const noexcept -> size_type
Determines the last index of a specific item in the xtd::collections::generic::list <type_t>.
Definition list.hpp:788
auto sort(xtd::usize index, xtd::usize count, const xtd::collections::generic::icomparer< type_t > &comparer) -> list< type_t > &
Sorts the elements in a range of elements in xtd::collections::generic::list <type_t> using the speci...
Definition list.hpp:1039
auto slice(size_type start, size_type length) -> xtd::span< type_t >
Creates a shallow copy of a range of elements in the source xtd::collections::generic::list <type_t>.
Definition list.hpp:929
auto insert(size_type index, type_t &&value) -> void
Inserts an element into the xtd::collections::generic::list <type_t> at the specified index.
Definition list.hpp:731
auto remove_range(size_type index, size_type count) -> void
Removes a range of elements from the xtd::collections::generic::list <type_t>.
Definition list.hpp:863
auto index_of(const type_t &value, size_type index) const -> size_type
Determines the index of a specific item in the xtd::collections::generic::list <type_t>.
Definition list.hpp:704
auto ensure_capacity(xtd::usize capacity) -> xtd::usize
Ensures that the capacity of this list is at least the specified capacity. If the current capacity is...
Definition list.hpp:466
auto remove(const type_t &item) noexcept -> bool override
Removes the first occurrence of a specific object from the xtd::collections::generic::list <type_t>.
Definition list.hpp:815
auto to_string() const noexcept -> xtd::string override
Returns a xtd::string that represents the current object.
Definition list.hpp:1052
auto add(const type_t &item) -> void override
Adds an object to the end of the xtd::collections::generic::list <type_t>.
Definition list.hpp:290
virtual auto resize(size_type count, const value_type &value) -> void
Resizes the container to contain count elements, does nothing if count == size().
Definition list.hpp:884
auto reverse() -> list< type_t > &
Reverses the order of the elements in the entire xtd::collections::generic::list <type_t>.
Definition list.hpp:898
auto remove_all(predicate_t match) -> xtd::usize
Removes all the elements that match the conditions defined by the specified predicate.
Definition list.hpp:834
auto find_last(predicate_t match) const -> optional< type_t >
Searches for an element that matches the conditions defined by the specified predicate,...
Definition list.hpp:587
xtd::usize size_type
Definition list.hpp:96
auto find_last_index(xtd::usize start_index, predicate_t match) const -> xtd::usize
Searches for an element that matches the conditions defined by the specified predicate,...
Definition list.hpp:608
auto slice(size_type start, size_type length) const -> xtd::read_only_span< type_t >
Creates a shallow copy of a range of elements in the source xtd::collections::generic::list <type_t>.
Definition list.hpp:920
auto add_range(const xtd::collections::generic::ienumerable< type_t > &enumerable) -> void
Adds copy of elements from the specified collection to the end of the xtd::collections::generic::list...
Definition list.hpp:317
auto data() noexcept -> pointer override
Returns pointer to the underlying array serving as element storage.
Definition list.hpp:260
list() noexcept=default
Initializes a new instance of the xtd::collections::generic::list class that is empty.
list(const list &list)
Default copy constructor with specified list.
Definition list.hpp:151
auto & items() noexcept
Returns the underlying base type items.
Definition list.hpp:271
auto add_range(std::initializer_list< type_t > il) -> void
Adds copy of elements from the specified collection to the end of the xtd::collections::generic::list...
Definition list.hpp:327
const value_type & const_reference
Definition list.hpp:100
auto sort(xtd::usize index, xtd::usize count, xtd::callable< xtd::int32, const type_t &, const type_t & > auto &&comparison) -> list< type_t > &
Sorts the elements in a range of elements in xtd::collections::generic::list <type_t> using the speci...
Definition list.hpp:1027
auto capacity(size_type value) -> void
Sets the total number of elements the internal data structure can hold without resizing.
Definition list.hpp:226
auto insert_range(size_type index, const std::initializer_list< type_t > &items) -> void
Inserts copy of elements from a collection into the xtd::collections::generic::list <type_t> at the s...
Definition list.hpp:765
auto for_each(action_t action) -> void
Performs the specified action on each element of the xtd::collections::generic::list <type_t>.
Definition list.hpp:638
auto sort(xtd::usize index, xtd::usize count, xtd::callable< bool, const type_t &, const type_t & > auto &&less_comparison) -> list< type_t > &
Sorts the elements in a range of elements in xtd::collections::generic::list <type_t> using the speci...
Definition list.hpp:998
list(const xtd::collections::generic::ienumerable< type_t > &collection)
Initializes a new instance of the xtd::collections::generic::list <type_t> class that contains elemen...
Definition list.hpp:135
auto contains(const type_t &value) const noexcept -> bool override
Determines whether an element is in the xtd::colllections::generic::list <type_t>.
Definition list.hpp:402
list(list &list)
Default copy constructor with specified list.
Definition list.hpp:148
list(const base_type &list)
Copy constructor with specified base type list.
Definition list.hpp:160
auto sort(xtd::callable< xtd::int32, const type_t &, const type_t & > auto &&comparison) -> list< type_t > &
Sorts the elements in the entire xtd::collections::generic::list <type_t> using the specified xtd::co...
Definition list.hpp:976
typename ilist< xtd::any_object >::value_type value_type
Definition list.hpp:90
list(list &&list)
Move constructor with specified list.
Definition list.hpp:154
list(iterable_t &&items)
Initializes a new instance of the xtd::iterable that contains elements copied from the specified coll...
Definition list.hpp:142
auto exists(predicate_t match) const -> bool
Determines whether the xtd::collections::generic::list <type_t> contains elements that match the cond...
Definition list.hpp:500
auto true_for_all(prediacate_t match) const -> bool
Determines whether every element in the xtd::collections::generic::list <type_t> matches the conditio...
Definition list.hpp:1088
value_type & reference
Definition list.hpp:98
auto copy_to(xtd::array< type_t > &array, size_type array_index) const -> void override
Copies the entire xtd::colllections::generic::list <type_t> to a compatible one-dimensional array,...
Definition list.hpp:439
enumerator< value_type > get_enumerator() const noexcept override
Returns an enumerator that iterates through the xtd::collections::generic::list <type_t>.
Definition list.hpp:646
auto sort(xtd::callable< std::strong_ordering, const type_t &, const type_t & > auto &&ordering_comparison) -> list< type_t > &
Sorts the elements in the entire xtd::collections::generic::list <type_t> using the specified xtd::ca...
Definition list.hpp:966
auto sort(xtd::usize index, xtd::usize count, xtd::callable< std::strong_ordering, const type_t &, const type_t & > auto &&ordering_comparison) -> list< type_t > &
Sorts the elements in a range of elements in xtd::collections::generic::list <type_t> using the speci...
Definition list.hpp:1015
auto get_range(size_type index, size_type count) -> list
Creates a shallow copy of a range of elements in the source xtd::collections::generic::list <type_t>.
Definition list.hpp:687
auto binary_search(xtd::usize index, xtd::usize count, const type_t &item, const xtd::collections::generic::icomparer< type_t > &comparer) const -> xtd::usize
Searches a range of elements in the sorted xtd::collections::generic::list <type_t> for an element us...
Definition list.hpp:380
auto copy_to(xtd::array< type_t > &array) const -> void
Copies the entire xtd::collections::generic::list <type_t> to a compatible one-dimensional array.
Definition list.hpp:431
typename xtd::collections::generic::helpers::raw_array< value_type >::base_type base_type
Definition list.hpp:92
auto binary_search(const type_t &item, const xtd::collections::generic::icomparer< type_t > &comparer) const noexcept -> xtd::usize
Searches the entire sorted xtd::collections::generic::list <type_t> for an element using the specifie...
Definition list.hpp:365
auto copy_to(size_type index, xtd::array< type_t > &array, size_type array_index, size_type count) const -> void
Copies the entire xtd::collections::generic::list <type_t> to a compatible one-dimensional array,...
Definition list.hpp:456
auto equals(const list &obj) const noexcept -> bool override
Indicates whether the current object is equal to another object of the same type.
Definition list.hpp:481
auto clear() -> void override
Removes all elements from the xtd::collections::generic::list <type_t>.
Definition list.hpp:397
auto capacity() const noexcept -> size_type
Definition list.hpp:202
auto find_last_index(predicate_t match) const -> xtd::usize
Searches for an element that matches the conditions defined by the specified predicate,...
Definition list.hpp:599
auto remove_at(size_type index) -> void override
Removes the element at the specified index of the xtd::collections::generic::list <type_t>.
Definition list.hpp:850
auto find_index(xtd::usize start_index, predicate_t match) const -> xtd::usize
Searches for an element that matches the conditions defined by the specified predicate,...
Definition list.hpp:557
value_type * pointer
Definition list.hpp:102
auto reverse(size_type index, size_type count) -> list< type_t > &
Reverses the order of the elements in the specified range.
Definition list.hpp:908
auto find_index(predicate_t match) const -> xtd::usize
Searches for an element that matches the conditions defined by the specified predicate,...
Definition list.hpp:548
auto find_all(predicate_t match) const -> list
Retrieves all the elements that match the conditions defined by the specified predicate.
Definition list.hpp:534
auto binary_search(const type_t &item) const noexcept -> xtd::usize
Searches the entire sorted xtd::collections::generic::list <type_t> for an element using the default ...
Definition list.hpp:353
const auto & items() const noexcept
Definition list.hpp:268
xtd::collections::object_model::read_only_collection< value_type > read_only_collection
Definition list.hpp:106
auto find(predicate_t match) const -> optional< type_t >
Searches for an element that matches the conditions defined by the specified predicate,...
Definition list.hpp:516
auto insert_range(size_type index, const xtd::collections::generic::ienumerable< type_t > &enumerable) -> void
Inserts copy of elements from a collection into the xtd::collections::generic::list <type_t> at the s...
Definition list.hpp:745
auto convert_all(converter_t converter) const -> list< output_t >
Converts the elements in the current xtd::colllections::generic::list <type_t> to another type,...
Definition list.hpp:414
auto sort(const xtd::collections::generic::icomparer< type_t > &comparer) -> list< type_t > &
Sorts the elements in the entire xtd::collections::generic::list <type_t> using the specified compare...
Definition list.hpp:986
auto trim_excess() -> void
Sets the capacity to the actual number of elements in the xtd::collections::generic::list <type_t>,...
Definition list.hpp:1074
list(input_iterator_t first, input_iterator_t last)
Constructs the container with the contents of the range [first, last).
Definition list.hpp:171
auto as_read_only() const noexcept -> read_only_collection
Returns a read-only xtd::collections::object_model::read_only_collection <type_t> wrapper for the cur...
Definition list.hpp:338
auto add(type_t &&item) -> void
Adds an object to the end of the xtd::collections::generic::list <type_t>.
Definition list.hpp:307
Provides the base class for a generic read-only collection.
Definition read_only_collection.hpp:39
static auto throws(xtd::helpers::exception_case exception_case, const source_location &location=source_location::current()) -> void
Throws an exption with specified exception case.
Defines a generalized method that a value type or class implements to create a type-specific method f...
Definition iequatable.hpp:23
static auto order_by_descending(source_t &&source, key_selector_t &&key_selector) -> xtd::collections::generic::enumerable_generator< xtd::iterable_value_type< source_t > >
Sorts the elements of a sequence in descending order according to a key.
static auto distinct(source_t &&source) noexcept -> xtd::collections::generic::enumerable_generator< xtd::iterable_value_type< source_t > >
Returns distinct elements from a sequence by using the default equality comparer to compare values.
typename xtd::collections::generic::list< type_t > list
Represents the list value type.
Definition enumerable_.hpp:95
static auto count_by(source_t &&source, key_selector_t &&key_selector) noexcept -> xtd::collections::generic::enumerable_generator< xtd::collections::generic::key_value_pair< key_t, xtd::usize > >
Returns the count of elements in the source sequence grouped by key.
static auto from(source_t &&source) noexcept
Returns the input typed as xtd::collections::generic::ienumerable <type_t>.
static auto order(source_t &&source) -> xtd::collections::generic::enumerable_generator< xtd::iterable_value_type< source_t > >
Sorts the elements of a sequence in ascending order.
static auto as_enumerable(source_t &&source) noexcept
Returns the input typed as xtd::collections::generic::ienumerable <type_t>.
static auto order_by(source_t &&source, key_selector_t &&key_selector) -> xtd::collections::generic::enumerable_generator< xtd::iterable_value_type< source_t > >
Sorts the elements of a sequence in ascending order according to a key.
static auto to_list(const ienumerable< source_t > &source)
Creates a xtd::collections::generic::list <type_t> from an xtd::collections::generic::ienumerable <ty...
Supports all classes in the xtd class hierarchy and provides low-level services to derived classes....
Definition object.hpp:40
Definition __span_definitions.hpp:16
Represents a non-owning view over a contiguous sequence of objects.
Definition span.hpp:62
Represents the version number of an assembly, operating system, or the xtd. This class cannot be inhe...
Definition version.hpp:115
Contains xtd::collections::generic::enumerable concept.
Contains xtd::comparison delegate.
Definition callable.hpp:11
Definition enumerable.hpp:17
Contains xtd::converter alias.
Contains xtd::collections::generic::helpers::equator struct.
Contains xtd::collections::generic::comparer <type_t> class.
Contains xtd::collections::generic::ilist <type_t> interface.
generic::enumerator< xtd::any_object > enumerator
Supports a simple iteration over a non-generic collection.
Definition enumerator.hpp:28
xtd::raw_type< decltype(*std::begin(std::declval< iterable_t & >()))> iterable_value_type
Represents the orward iterable value type.
Definition iterable_value_type.hpp:29
xtd::delegate< int32(type_t x, type_t y)> comparison
Represents the method that compares two objects of the same type.
Definition comparison.hpp:33
xtd::delegate< output_t(input_t input)> converter
Represents a method that converts an object from one type to another type.
Definition converter.hpp:33
@ index_out_of_range
The index is out of range.
Definition exception_case.hpp:61
@ out_of_memory
Out of memory.
Definition exception_case.hpp:87
@ argument_out_of_range
The argument is out of range.
Definition exception_case.hpp:35
@ invalid_operation
The operation is not valid.
Definition exception_case.hpp:65
#define self_
The self_ expression is a reference value expression whose value is the reference of the implicit obj...
Definition self.hpp:20
#define delegate_
The declaration of a delegate type is similar to a method signature. It has a return value and any nu...
Definition delegate.hpp:1018
xtd::sptr< type_t > ptr
The xtd::ptr object is a shared pointer.
Definition ptr.hpp:27
std::optional< type_t > optional
Represents the optional alias on std::optional.
Definition optional.hpp:26
std::size_t usize
Represents an unsigned size of any object in bytes.
Definition usize.hpp:22
constexpr null_opt nullopt
Represents a nullopt value. Used to indicate that an std::optional does not contain a value.
Definition nullopt.hpp:26
xtd::func< bool, type_t > predicate
Represents a delegate that defines a set of criteria and determines whether the specified object meet...
Definition predicate.hpp:16
auto is(xtd::any value) -> bool
Checks if the result of an expression is compatible with a given type.
Definition is.hpp:485
auto new_ptr(args_t &&... args) -> xtd::ptr< type_t >
The xtd::new_ptr operator creates a xtd::ptr object.
Definition new_ptr.hpp:24
@ other
The operating system is other.
Definition platform_id.hpp:60
@ y
The Y key.
Definition console_key.hpp:136
@ n
The N key.
Definition console_key.hpp:114
@ i
The I key.
Definition console_key.hpp:104
@ x
The X key.
Definition console_key.hpp:134
Contains xtd::intptr type.
Contains xtd::collections::generic::helpers::lesser struct.
The xtd::extensions namespace contains interface extensions.
Definition collection_common.hpp:14
The xtd::collections::generic namespace contains interfaces and classes that define generic collectio...
Definition comparer.hpp:16
The xtd::collections namespace contains interfaces and classes that define various collections of obj...
Definition any_pair.hpp:10
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition abstract_object.hpp:8
xtd::usize size_type
Represents the read_only_span size type (usually xtd::usize).
Definition read_only_span.hpp:65
constexpr auto length() const noexcept -> size_type
Returns the length of the current read_only_span.
Definition read_only_span.hpp:209
Contains xtd::new_ptr method.
Contains xtd::object class.
Contains xtd::optional type.
Contains xtd::predicate delegate.
Contains xtd::collections::generic::helpers::raw_array class.
Contains xtd::raw_type alias.
Contains xtd::collections::object_model::read_only_collection class.
Contains xtd::read_only_span class.
Contains xtd::span class.
Contains xtd::string alias.
Supports a simple iteration over a generic collection.
Definition enumerator.hpp:39
const type_t & current() const override
Gets the element in the collection at the current position of the enumerator.
Definition enumerator.hpp:63
bool move_next() override
Advances the enumerator to the next element of the collection.
Definition enumerator.hpp:72
Implements a function object for performing comparisons. Unless specialised, invokes operator== on ty...
Definition equator.hpp:39
Implements a function object for compare data.
Definition lesser.hpp:39
Represents a type that can be used to index a collection either from the beginning or the end.
Definition index.hpp:38
static const index end
Represents a value that is not a valid position in a collection.
Definition index.hpp:136