| ||||||||||||||||||||||
| Range primitives | |||||||
| |||||||
| Range concepts | |||||||||||||||||||
| |||||||||||||||||||
| Range factories | |||||||||
| |||||||||
| Range adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Helper items | |||||||||||||||||
| |||||||||||||||||
constexpr/*make-unsigned-like-t*/<std::iter_difference_t<I>> size()const requires(K== ranges::subrange_kind::sized); | (since C++20) | |
Obtains the number of elements in thesubrange:
StoreSize istrue, returnssize_.to-unsigned-like (end_ - begin_ ).For the definition of/*make-unsigned-like-t*/, seemake-unsigned-like-t .
As described above.
#include <functional>#include <iostream>#include <ranges>#include <utility> int main(){constauto v={2,2,2,7,1,1,1,1,8,2,2,2,2,2}; // the value type of views::chunk_by is the ranges::subrange auto to_pair=[](auto sub){returnstd::make_pair(sub[0], sub.size());};/* ^^^^ */auto pairs= v| std::views::chunk_by(std::equal_to{})| std::views::transform(to_pair); for(auto x: pairs bitor std::views::keys)std::cout<< x<<' ';std::cout<<'\n';for(auto x: pairs bitor std::views::values)std::cout<< x<<' ';std::cout<<'\n';}
Output:
2 7 1 8 23 1 4 1 5
checks whether thesubrange is empty(public member function)[edit] | |
(C++17)(C++20) | returns the size of a container or array (function template)[edit] |
(C++20) | returns an integer equal to the size of a range (customization point object)[edit] |