Chuyển tới nội dung chính

std::array::data

#include <array>

Truy cập trực tiếp vào mảng cơ bản (underlying array) dưới dạng con trỏ.

      value_type* data() noexcept;
const value_type* data() const noexcept;

Tham số

Không có tham số

Giá trị trả về

  • Trả về một con trỏ tới phần tử đầu tiên của mảng.
    • Trả về value_type* nếu mảng không phải là hằng.
    • Trả về const value_type* nếu mảng là hằng.
  • Nếu mảng rỗng, giá trị trả về là con trỏ hợp lệ nhưng việc truy cập nội dung sẽ dẫn đến hành vi không xác định.

Đặc điểm

  1. Cung cấp con trỏ đến phần tử đầu tiên trong mảng bên trong đối tượng std::array.
  2. Phù hợp để tích hợp std::array với các API yêu cầu con trỏ thô kiểu C (ví dụ: các thư viện legacy).
  3. Không ném ngoại lệ.
  4. Hữu dụng để sử dụng trong các trường hợp yêu cầu thao tác trực tiếp với mảng.
  5. Con trỏ trả về bởi data() luôn trỏ đến phần tử đầu tiên trong mảng.
  6. Không nên sử dụng data() trên mảng đã bị thay đổi kích thước hoặc đã bị hủy.

Ví dụ

Truy cập dữ liệu với data()

#include <array>
#include <iostream>

int main() {
std::array<int, 5> arr = {10, 20, 30, 40, 50};

// Lấy con trỏ tới mảng thô
int* ptr = arr.data();

// In các phần tử bằng con trỏ
for (size_t i = 0; i < arr.size(); ++i) {
std::cout << *(ptr + i) << " ";
}
return 0;
}

Kết hợp với thư viện C

#include <array>
#include <cstdio> // cho printf

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

// Sử dụng data() với printf
printf("First element: %d\n", *(arr.data()));
return 0;
}

Sử dụng với mảng const

#include <array>
#include <iostream>

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

int main() {
const std::array<int, 4> arr = {5, 10, 15, 20};
printArray(arr.data(), arr.size());
return 0;
}

Các hàm liên quan

beginTrả về một iterator trỏ đến phần tử đầu tiên của std::array
frontTruy xuất phần tử tại vị trí đầu tiên
[]Truy xuất phần tử tại vị trí chỉ định
fillGán một giá trị cụ thể cho tất cả các phần tử trong mảng std::array