Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::ranges...ter-iterator(3) C++ Standard Libarystd::ranges...ter-iterator(3)

NAME
       std::ranges::chunk_view::outer-iterator				     -
       std::ranges::chunk_view::outer-iterator

Synopsis
	  class	/*outer-iterator*/  (since C++23)
				    (exposition	only*)

	  The return type of chunk_view::begin if V models input_range.

Member types
	  Member type	   Definition
	  iterator_concept std::input_iterator_tag
	  difference_type  ranges::range_difference_t<V>

	  Data members

	  Member object	    Definition
	  parent_  (private)  A	 pointer  to  the  "parent  object"  of	  type
       ranges::chunk_view*
			    (exposition-only member object*)

Member functions
	  constructor	constructs an iterator
	  (C++23)	(public	member function)
	  operator=	move assigns another iterator
	  (C++23)	(public	member function)
	  operator*	accesses the element
	  (C++23)	(public	member function)
	  operator++	increments the iterator
	  (C++23)	(public	member function)

Non-member functions
	  operator== compares the iterator with	default	sentinel
	  (C++23)    (function)
	  operator-  calculates	the number of chunks remaining
	  (C++23)    (function)

	  Nested classes

	  value_type the value type of /*output-iterator*/
	  (C++23)    (public member class)

Example
       // Run this code

	#include <iostream>
	#include <iterator>
	#include <ranges>
	#include <sstream>

	int main()
	{
	    const std::string source{"ABCDEFGHIJ"};

	    auto letters = std::istringstream{source};
	    auto chunks	= std::ranges::istream_view<char>(letters)
			| std::views::chunk(4);

	    for	 (auto	outer_iter  =  chunks.begin();	outer_iter != std::de-
       fault_sentinel;
		 ++outer_iter)
	    {
		auto chunk = *outer_iter; // chunk is an object	of type
					  //	      chunk_view::outer_itera-
       tor::value_type
		std::cout << '[';
		for  (auto  inner_iter = chunk.begin();	inner_iter != std::de-
       fault_sentinel;
		     ++inner_iter)
		    std::cout << *inner_iter;
		std::cout << "]	";
	    }
	    std::cout << '\n';

	    // The same	output using range-for loops
	    auto letters2 = std::istringstream{source};
	    auto chunks2 = std::ranges::istream_view<char>(letters2)
			 | std::views::chunk(4);
	    for	(auto chunk : chunks2)
	    {
		std::cout << '[';
		for (auto ch : chunk)
		    std::cout << ch;
		std::cout << "]	";
	    }
	    std::cout << '\n';
	}

Output:
	[ABCD] [EFGH] [IJ]
	[ABCD] [EFGH] [IJ]

References
	    * C++23 standard (ISO/IEC 14882:2023):

	    *	     26.7.28.3	      Class	    chunk_view::outer-iterator
       [range.chunk.outer.iter]

See also
http://cppreference.com		  2024.06.10	 std::ranges...ter-iterator(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::ranges::chunk_view::outer-iterator&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help