home | help
std::array::data(3)	       C++ Standard Libary	     std::array::data(3)

NAME
     std::array::data - std::array::data

Synopsis
	T* data() noexcept;		(1) (since C++11)
					    (constexpr since C++17)
	const T* data() const noexcept; (2) (since C++11)
					    (constexpr since C++14)

	Returns  pointer to the underlying array serving as element storage. The
     pointer is
	such that range [data(), data() + size()) is always a valid range,  even
     if the
	container is empty (data() is not dereferenceable in that case).

Parameters
	(none)

Return value
	Pointer to the underlying element storage. For non-empty containers, the
     returned
	pointer compares equal to the address of the first element.

Complexity
	Constant.

Notes
	If size() is 0, data() may or may not return a null pointer.

Example
     // Run this code

      #include <cstddef>
      #include <iostream>
      #include <span>
      #include <array>

      void pointer_func(const int* p, std::size_t size)
      {
	  std::cout << "data = ";
	  for (std::size_t i = 0; i < size; ++i)
	      std::cout << p[i] << ' ';
	  std::cout << '\n';
      }

      void span_func(std::span<const int> data) // since C++20
      {
	  std::cout << "data = ";
	  for (const int e : data)
	      std::cout << e << ' ';
	  std::cout << '\n';
      }

      int main()
      {
	  std::array<int, 4> container{1, 2, 3, 4};

	  // Prefer container.data() over &container[0]
	  pointer_func(container.data(), container.size());

	  // std::span (C++20) is a safer alternative to separated pointer/size.
	  span_func({container.data(), container.size()});
      }

Output:
      data = 1 2 3 4
      data = 1 2 3 4

See also
	front	access the first element
		(public member function)
	back	access the last element
		(public member function)
	size	returns the number of elements
		(public member function)
	span	a non-owning view over a contiguous sequence of objects
	(C++20) (class template)
	data	obtains the pointer to the underlying array
	(C++17) (function template)

http://cppreference.com 	   2024.06.10		     std::array::data(3)

home | help