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

FreeBSD Manual Pages

  
 
  

home | help
std::counte...ted_iterator(3) C++ Standard Libarystd::counte...ted_iterator(3)

NAME
       std::counted_iterator::counted_iterator	    -	   std::counted_itera-
       tor::counted_iterator

Synopsis
	  constexpr		   counted_iterator()		      requires
       (1) (since C++20)
	  std::default_initializable<I>	= default;
	  constexpr  counted_iterator(	I  x,  std::iter_difference_t<I>  n );
       (2) (since C++20)
	  template< class I2 >

	      requires	      std::convertible_to<const	       I2&,	    I>
       (3) (since C++20)

		  constexpr counted_iterator( const counted_iterator<I2>&
	  other	);

	  Constructs a new iterator adaptor.

	  1)  Default  constructor.  Value-initializes the underlying iterator
       and initialized
	  the underlying length	with 0.	Operations on the  resulting  iterator
       have defined
	  behavior if and only if the corresponding operations on a value-ini-
       tialized	I also
	  have defined behavior.
	  2)  The underlying iterator is initialized with std::move(x) and the
       underlying
	  length is initialized	with n.	The behavior is	undefined if n is neg-
       ative.
	  3) The underlying iterator and length	are initialized	with those  of
       other.

Parameters
	  x	- iterator to adapt
	  n	- distance to the end
	  other	- iterator adaptor to convert

Example
       // Run this code

	#include <algorithm>
	#include <initializer_list>
	#include <iostream>
	#include <iterator>

	int main()
	{
	    static constexpr auto pi = {3, 1, 4, 1, 5, 9, 2};

	    // (1) default constructor:
	    constexpr std::counted_iterator<std::initializer_list<int>::itera-
       tor> i1{};
	    static_assert(i1 ==	std::default_sentinel);
	    static_assert(i1.count() ==	0);

	    // (2) initializes the iterator and	length respectively:
	    constexpr std::counted_iterator<std::initializer_list<int>::itera-
       tor> i2{
		pi.begin(), pi.size() -	2
	    };
	    static_assert(i2.count() ==	5);
	    static_assert(*i2 == 3 && i2[1] == 1);

	    // (3) converting-constructor:
	    std::counted_iterator<std::initializer_list<const  int>::iterator>
       i3{i2};

	    std::ranges::copy(i3, std::default_sentinel,
		std::ostream_iterator<const int>{std::cout, " "});
	}

Output:
	3 1 4 1	5

See also
	  operator= assigns another iterator adaptor
	  (C++20)   (public member function)

http://cppreference.com		  2024.06.10	 std::counte...ted_iterator(3)

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

home | help