Función `data` de `<array>` en C++
Clase contenedora `<array>` de C++
dataEs una función muy especial de `array`, quedevuelve un puntero al arreglo subyacente, permitiéndote usar `array` como si fuera un arreglo de C.
dataEs una función miembro de la clase contenedora, utilizada paradevolver un puntero al almacenamiento interno de datos del contenedor. Esto permite que `array` interactúe con API de estilo C u otro código que requiera punteros crudos.
dataProporciona un puente entre `array` y el código en lenguaje C, lo que refleja la compatibilidad de `array`.
Significado de la palabra: dataSignifica "datos", e indica obtener el puntero a los datos subyacentes.
Sintaxis básica y parámetros
dataEs una función miembro de la clase contenedora; no requiere parámetros para llamarla.
Formato de sintaxis
T* data(); const T* data() const;
Descripción de parámetros
- Parámetros: Sin parámetros
dataNo acepta ningún parámetro.
Descripción de la función
- Valor de retorno: Devuelve un puntero al arreglo subyacente. Si el contenedor es constante, devuelve un puntero constante.Efecto
- : El puntero devuelto apunta al primer elemento del contenedor, equivalente aNota
&operator[](0)。 - : `array` tiene un tamaño fijo y nunca reasigna memoria, por lo queel puntero devuelto siempre es válido.
data()Ejemplo
Ejemplo
mediante una serie de ejemplos.dataEjemplo 1: Uso básico: obtener el puntero al arreglo subyacente
Ejemplo 1: Uso básico: obtener el puntero al arreglo subyacente
Ejemplo
#include <array>
int main() {
"El tamaño del array es: "
std::array<int, 5> numbers = {10, 20, 30, 40, 50};
std::cout << // 2. Usar data para obtener el puntero al arreglo subyacente << numbers.size() << std::endl;
"Acceso mediante puntero: "
int* ptr = numbers.data();
std::cout << Resultado esperado: << std::endl;
for(size_t i = 0; i < numbers.size(); ++i) {
std::cout << "ptr[" << i << "] = " << ptr[i] << std::endl;
}
return 0;
}
Análisis del código:
array的大小是: 5 通过指针访问: ptr[0] = 10 ptr[1] = 20 ptr[2] = 30 ptr[3] = 40 ptr[4] = 50
Devuelve un puntero al primer elemento.
numbers.data()A través del puntero devuelto, se puede acceder a todos los elementos usando la sintaxis de subíndices de arreglo.- Ejemplo 2: Modificar elementos mediante el puntero
Ejemplo 2: Modificar elementos mediante el puntero
dataEjemplo
Ejemplo
#include <array>
int main() {
std::array<int, 3> numbers = {10, 20, 30};
std::cout << // Obtener el puntero mediante data() y modificar elementos;
for(int n : numbers) {
std::cout << n << " ";
}
std::cout << std::endl;
"Después de modificar: "
int* ptr = numbers.data();
ptr[0] = 100;
ptr[1] = 200;
ptr[2] = 300;
std::cout << Resultado esperado:;
for(int n : numbers) {
std::cout << n << " ";
}
std::cout << std::endl;
return 0;
}
Análisis del código:
修改前: 10 20 30 修改后: 100 200 300
A través del puntero devuelto por
- se pueden modificar directamente los datos internos de `array`.
data()Ejemplo 3: Interacción con API de estilo C
Ejemplo 3: Interacción con API de estilo C
dataEjemplo
Ejemplo
#include <array>
// Usar data() para pasar el array a una función de estilo C
int sumArray(const int* arr, size_t size) {
int sum = 0;
for(size_t i = 0; i < size; ++i) {
sum += arr[i];
}
return sum;
}
int main() {
std::array<int, 5> numbers = {1, 2, 3, 4, 5};
"Elementos del array: "
int total = sumArray(numbers.data(), numbers.size());
std::cout << "Suma: ";
for(int n : numbers) {
std::cout << n << " ";
}
std::cout << std::endl;
std::cout << Resultado esperado: << total << std::endl;
return 0;
}
Análisis del código:
数组元素: 1 2 3 4 5 总和: 15
Pasa el puntero al arreglo interno de `array` a una función que acepta
numbers.data().const int*Esto demuestra la capacidad de `array` para interactuar sin problemas con código C.- Clase contenedora `<array>` de C++
Pensando con IA...