Espacios de nombres
Variantes
Acciones

std::data

De cppreference.com
< cpp‎ | iterator
 
 
Biblioteca de iteradores
Conceptos de iteradores
Primitivas de iteradores
Conceptos de algoritmos y servicios
Conceptos invocables indirectos
Requerimientos comunes de algoritmos
Servicios
Adaptadores de iteradores
Iteradores de flujos
Puntos de personalización de iteradores
Operaciones de iteradores
Acceso a rangos
(C++11)(C++14)
(C++11)(C++14)
(C++17)(C++20)
(C++14)(C++14)
(C++14)(C++14)
(C++17)
data
(C++17)
 
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

#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

Obtiene un puntero al principio de un rango contiguo
(objeto punto de personalización)[editar]
Obtiene un puntero al inicio de un rango contiguo de solo lectura
(objeto punto de personalización)[editar]
close