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.
- Trả về
- 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
- Cung cấp con trỏ đến phần tử đầu tiên trong mảng bên trong đối tượng std::array.
- 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).
- Không ném ngoại lệ.
- 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.
- Con trỏ trả về bởi
data()
luôn trỏ đến phần tử đầu tiên trong mảng. - 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
begin | Trả về một iterator trỏ đến phần tử đầu tiên của std::array |
front | Truy xuất phần tử tại vị trí đầu tiên |
[] | Truy xuất phần tử tại vị trí chỉ định |
fill | Gán một giá trị cụ thể cho tất cả các phần tử trong mảng std::array |