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

FreeBSD Manual Pages

  
 
  

home | help
std::span::at(3)	      C++ Standard Libary	      std::span::at(3)

NAME
       std::span::at - std::span::at

Synopsis
	  constexpr reference at( size_type pos	) const;  (since C++26)

	  Returns  a  reference	to the element at specified location pos, with
       bounds checking.

	  If pos is not	within the range of the	span,  an  exception  of  type
       std::out_of_range
	  is thrown.

Parameters
	  pos -	position of the	element	to return

Return value
	  Reference to the requested element, i.e. *(data() + pos).

Exceptions
	  std::out_of_range if pos >= size().

Complexity
	  Constant.

Notes
	  Feature-test macro  Value    Std	Feature
	  __cpp_lib_span     202311L (C++26) std::span::at

Example
       // Run this code

	#include <iostream>
	#include <span>
	#include <stdexcept>

	#ifdef __GNUG__
	[[gnu::noinline]]
	#endif
	unsigned int runtime_six() // Emulate runtime input
	{
	    return 6u;
	}

	int main()
	{
	    int	x[]{1, 2, 4, 5,	5, 6};
	    std::span data(x);

	    // Set element 1
	    data.at(1) = 88;

	    // Read element 2
	    std::cout  <<  "Element  at	 index	2 has value " << data.at(2) <<
       '\n';

	    std::cout << "data size = "	<< data.size() << '\n';

	    try
	    {
		// Set element 6, where	the index is determined	at runtime
		data.at(runtime_six()) = 666;
	    }
	    catch (std::out_of_range const& exc)
	    {
		std::cout << exc.what()	<< '\n';
	    }

	    // Print final values
	    std::cout << "data:";
	    for	(int elem : data)
		std::cout << ' ' << elem;
	    std::cout << '\n';
	}

Possible output:
	Element	at index 2 has value 4
	data size = 6
	std::out_of_range: pos >= size()
	data: 1	88 4 5 5 6

See also
	  operator[] access specified element
		     (public member function)

http://cppreference.com		  2024.06.10		      std::span::at(3)

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

home | help