Метод data
Метод data класса array возвращает указатель на первый элемент внутреннего массива, который хранится внутри контейнера. Это позволяет получить прямой доступ к памяти, где расположены элементы, и использовать контейнер array совместно с функциями и алгоритмами, которые работают с обычными C-массивами. Метод не принимает параметров и возвращает указатель типа T*.
Синтаксис
arr.data()
Пример
Давайте получим указатель на первый элемент массива и выведем значение, на которое он указывает:
#include <iostream>
#include <array>
using namespace std;
int main()
{
array<int, 5> arr = {1, 2, 3, 4, 5};
int* ptr = arr.data();
cout << *ptr << endl;
return 0;
}
Результат выполнения кода:
1
Пример
Давайте с помощью указателя, полученного методом data, изменим первый элемент массива и выведем весь массив:
#include <iostream>
#include <array>
using namespace std;
int main()
{
array<int, 5> arr = {1, 2, 3, 4, 5};
int* ptr = arr.data();
ptr[0] = 10;
for (int elem : arr) {
cout << elem << " ";
}
return 0;
}
Результат выполнения кода:
10 2 3 4 5
Пример
Давайте используем метод data для передачи элементов контейнера array в функцию, которая принимает обычный указатель на массив:
#include <iostream>
#include <array>
using namespace std;
void print(int* ptr, int size)
{
for (int i = 0; i < size; i++) {
cout << ptr[i] << " ";
}
}
int main()
{
array<int, 5> arr = {1, 2, 3, 4, 5};
print(arr.data(), arr.size());
return 0;
}
Результат выполнения кода:
1 2 3 4 5