xtd 0.2.0
Loading...
Searching...
No Matches
ranges_views.cpp

Shows how to use xtd::ranges::views views.

#include <xtd/xtd>
auto main() -> int {
//string names[] = {"Burke", "Connor", "Frank", "Everett", "Albert", "George", "Harris", "David"};
//auto names = std::initializer_list {"Burke"_s, "Connor"_s, "Frank"_s, "Everett"_s, "Albert"_s, "George"_s, "Harris"_s, "David"_s};
//auto names = std::array<string, 8> {"Burke", "Connor", "Frank", "Everett", "Albert", "George", "Harris", "David"};
//auto names = std::vector {"Burke"_s, "Connor"_s, "Frank"_s, "Everett"_s, "Albert"_s, "George"_s, "Harris"_s, "David"_s};
//auto names = std::list {"Burke"_s, "Connor"_s, "Frank"_s, "Everett"_s, "Albert"_s, "George"_s, "Harris"_s, "David"_s};
//auto names = std::unordered_set {"Burke"_s, "Connor"_s, "Frank"_s, "Everett"_s, "Albert"_s, "George"_s, "Harris"_s, "David"_s};
//auto names = fixed_array<string, 8> {"Burke", "Connor", "Frank", "Everett", "Albert", "George", "Harris", "David"};
//auto names = array {"Burke"_s, "Connor"_s, "Frank"_s, "Everett"_s, "Albert"_s, "George"_s, "Harris"_s, "David"_s};
//auto names = list {"Burke"_s, "Connor"_s, "Frank"_s, "Everett"_s, "Albert"_s, "George"_s, "Harris"_s, "David"_s};
//auto names = linked_list {"Burke"_s, "Connor"_s, "Frank"_s, "Everett"_s, "Albert"_s, "George"_s, "Harris"_s, "David"_s};
//auto names = hash_set {"Burke"_s, "Connor"_s, "Frank"_s, "Everett"_s, "Albert"_s, "George"_s, "Harris"_s, "David"_s};
//auto names = queue {"Burke"_s, "Connor"_s, "Frank"_s, "Everett"_s, "Albert"_s, "George"_s, "Harris"_s, "David"_s};
//auto names = stack {"Burke"_s, "Connor"_s, "Frank"_s, "Everett"_s, "Albert"_s, "George"_s, "Harris"_s, "David"_s};
auto names = {"Burke"_s, "Connor"_s, "Frank"_s, "Everett"_s, "Albert"_s, "George"_s, "Harris"_s, "David"_s};
// xtd::linq query
auto query1 = from(names)
.where(_*method(&string::length) == 5)
.order_by(_)
.select(_*method(&string::to_upper));
println(query1);
// xtd::ranges query
auto query2 = names
| where(_*method(&string::length) == 5)
| order_by(_)
| select(_*method(&string::to_upper));
println(query2);
// std::ranges combined with xtd::ranges query
auto query3 = names
| std::views::filter(_*method(&string::length) == 5)
| std::views::transform(_*method(&string::to_upper));
println(query3);
}
// This code produces the following output :
//
// [BURKE, DAVID, FRANK]
// [BURKE, DAVID, FRANK]
// [BURKE, DAVID, FRANK]
constexpr auto order_by
The xtd::ranges::views::order_by instance.
Definition order_by.hpp:40