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

FreeBSD Manual Pages

  
 
  

home | help
std::bidire...nal_iterator(3) C++ Standard Libarystd::bidire...nal_iterator(3)

NAME
       std::bidirectional_iterator - std::bidirectional_iterator

Synopsis
	  Defined in header <iterator>
	  template< class I >

	      concept bidirectional_iterator =
		  std::forward_iterator<I> &&
		  std::derived_from</*ITER_CONCEPT*/<I>,
	  std::bidirectional_iterator_tag>				    &&
       (since C++20)
		  requires(I i)	{
		      {	--i } -> std::same_as<I&>;
		      {	i-- } -> std::same_as<I>;

		  };

	  The  concept	bidirectional_iterator	refines	 forward_iterator   by
       adding the ability to
	  move an iterator backward.

Notes
	  Unlike  the  LegacyBidirectionalIterator  requirements, the bidirec-
       tional_iterator
	  concept does not require dereference to return an lvalue.

Example
	  A minimum bidirectional iterator.

	#include <cstddef>
	#include <iterator>

	struct SimpleBidiIterator
	{
	    using difference_type = std::ptrdiff_t;
	    using value_type = int;

	    int	operator*() const;

	    SimpleBidiIterator&	operator++();

	    SimpleBidiIterator operator++(int)
	    {
		auto tmp = *this;
		++*this;
		return tmp;
	    }

	    SimpleBidiIterator&	operator--();

	    SimpleBidiIterator operator--(int)
	    {
		auto tmp = *this;
		--*this;
		return tmp;
	    }

	    bool operator==(const SimpleBidiIterator&) const;
	};

	static_assert(std::bidirectional_iterator<SimpleBidiIterator>);

See also
	  forward_iterator	 specifies that	an input_iterator is a forward
       iterator,
	  (C++20)		 supporting equality comparison	and multi-pass
				 (concept)
				 specifies that	a bidirectional_iterator is  a
       random-access
	  random_access_iterator  iterator, supporting advancement in constant
       time and
	  (C++20)		 subscripting
				 (concept)

http://cppreference.com		  2024.06.10	 std::bidire...nal_iterator(3)

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

home | help