C++ 范围库 std::ranges::transform_view template< bool Const > class /*sentinel*/ (C++20 起) 底层类型非 common_range 时tranform_view::end 的返回类型。 const 限定重载返回 /*sentinel*/<true> 。非 const 限定重载返回 /*sentinel*/<false>。 此类模板的名称(此处示为 /*sentinel*/ )是...
std::ranges::views::transform,std::ranges::transform_view 定义于头文件<ranges> template<ranges::input_rangeV, std::copy_constructibleF> requires ranges::view<V>&& std::is_object_v<F>&& std::regular_invocable<F&, ranges::range_reference_t<V>>&& ...
std::convertible_to<ranges::iterator_t<V>,ranges::iterator_t<Base>>; (3)(C++20 起) 构造迭代器。 1)默认构造函数。值初始化底层迭代器,并以nullptr初始化指向父transform_view的指针。 2)以std::move(current)初始化底层迭代器,并以std::addressof(parent)初始化指向父视图的指针。
int main() { const auto v = { 0, 1, 2, 3, 4 }; auto x2 = [](int x) { return x << 1; }; std::ranges::transform_view tv{ v, x2 }; std::ostream_iterator<int> ostr{ std::cout, " " }; std::ranges::copy(v, ostr), std::cout << '\n'; std::ranges::copy(...
classtransform_view :publicranges::view_interface<transform_view<V, F>> (since C++20) (until C++23) template<ranges::input_rangeV, std::move_constructibleF> requiresranges::view<V>&& std::is_object_v<F>&& std::regular_invocable<F&,ranges::range_reference_t<V>>&& ...
operator-(transform_view::iterator,transform_view::sentinel) (C++20) constexpr/*iterator*/<false>begin(); (1)(since C++20) constexpr/*iterator*/<true>begin()const requiresranges::range<constV>&& std::regular_invocable<constF&,ranges::range_reference_t<constV>>; ...
:vector<std::vector<int>>&logs){intcur=0;constautotimes=logs//|std::ranges::views::transform...
transform_view<std::span<int>, std::_Bind_front<std::plus<int>, int> > >(this std::ranges::views::__adaptor::_Partial<std::ranges::__detail::_To2<std::vector> >&&, std::ranges::transform_view<std::span<int>, std::_Bind_front<std::plus<int>, int> >&&)::<lambda(auto:...
对于ranges::transform_view<std::span<std::string>, some_function>右值也是如此,即使它不是borrowed_range. 同样,对于 a 来说boost::iterator_range<std::string*>,即使这个遗留类型没有声明自己是 a view; 对于 来说也是如此owning_view<boost::iterator_range<std::string*>>,尽管它是 的专业化owning_vi...
zip可以将两个Ranges压缩为一个Range(2个的时候元素类型为pairs,多个的时候元素类型为tuples),zip_transform会在压缩的时候执行转换操作。 ajacent是一种特殊的zip,它的输入只有一个Range,可以针对某几个元素进行分组,产生一个新的Range,而ajacent_transform则会在分组之后执行转换操作。