std::data
De cppreference.com
Definido en el archivo de encabezado <array> | ||
Definido en el archivo de encabezado <deque> | ||
Definido en el archivo de encabezado <forward_list> | ||
Definido en el archivo de encabezado <iterator> | ||
Definido en el archivo de encabezado <list> | ||
Definido en el archivo de encabezado <map> | ||
Definido en el archivo de encabezado <regex> | ||
Definido en el archivo de encabezado <set> | ||
Definido en el archivo de encabezado <span> | (desde C++20) | |
Definido en el archivo de encabezado <string> | ||
Definido en el archivo de encabezado <string_view> | ||
Definido en el archivo de encabezado <unordered_map> | ||
Definido en el archivo de encabezado <unordered_set> | ||
Definido en el archivo de encabezado <vector> | ||
template<class C> constexprauto data(C& c)-> decltype(c.data()); | (1) | (desde C++17) |
template<class C> constexprauto data(const C& c)-> decltype(c.data()); | (2) | (desde C++17) |
template<class T, std::size_t N> constexpr T* data(T (&array)[N])noexcept; | (3) | (desde C++17) |
template<class E> constexprconst E* data(std::initializer_list<E> il)noexcept; | (4) | (desde C++17) |
Devuelve un puntero al bloque de memoria que contiene los elementos del contenedor.
1,2) devuelve c.data()
3) devuelve array
4) devuelve il.begin()
Contenido |
[editar]Parámetros
c | - | Un contenedor con una función miembro data(). |
array | - | Un array de tipo arbitrario. |
il | - | Una lista de inicializadores. |
[editar]Return value
Un puntero al bloque de memoria que contiene los elementos del contenedor.
[editar]Posible implementación
Primera versión |
---|
template<class C>constexprauto data(C& c)-> decltype(c.data()){return c.data();} |
Segunda versión |
template<class C>constexprauto data(const C& c)-> decltype(c.data()){return c.data();} |
Tercera versión |
template<class T, std::size_t N>constexpr T* data(T (&array)[N])noexcept{return array;} |
Cuarta versión |
template<class E>constexprconst E* data(std::initializer_list<E> il)noexcept{return il.begin();} |
[editar]Ejemplo
Ejecuta este código
#include <string>#include <cstring>#include <iostream> int main(){std::string s {"Hola mundo!\n"}; char a[20];// almacenamiento para una cadena estilo Cstd::strcpy(a, std::data(s));//[s.data(), s.data() + s.size()] se garantiza que sea una NTBS desde C++11 std::cout<< a;}
Salida:
Hola mundo!
[editar]Véase también
(C++20) | Obtiene un puntero al principio de un rango contiguo (objeto punto de personalización) |
(C++20) | Obtiene un puntero al inicio de un rango contiguo de solo lectura (objeto punto de personalización) |