//******************************************************** // The following code example is taken from the book // C++23 - The Complete Guide // by Nicolai M. Josuttis (www.josuttis.com) // http://www.cppstd23.com // // The code is licensed under a // Creative Commons Attribution 4.0 International License // http://creativecommons.org/licenses/by/4.0/ //******************************************************** #include #include #include #include #include #include class Person { private: std::string _name; public: Person(const std::string& s = {}) : _name{s} {} Person(const char* s) : _name{s} {} bool operator<(const Person& p) const { std::println("- compare {} with {}", _name, p._name); return _name < p._name; } auto name() const { return _name;} auto size() const { return _name.size();} }; int main() { std::vector coll{"Rome", "Berlin", "Kiev", "LA", "Tokyo", "Cairo"}; std::println("*** init view:"); auto v = coll | std::views::filter([] (auto p) { return p.size() > 2; }) // significant size | std::ranges::to() // sorted | std::views::drop(1) // skip first ; std::println("*** use view:"); for (const auto& p : v) { std::print("{} ", p.name()); }; std::print("\n"); }