std::get
#include <array>
template<std::size_t I, typename T, std::size_t N>
constexpr T& std::get(std::array<T, N>& arr) noexcept;
template<std::size_t I, typename T, std::size_t N>
constexpr const T& std::get(const std::array<T, N>& arr) noexcept;
template<std::size_t I, typename T, std::size_t N>
constexpr T&& std::get(std::array<T, N>&& arr) noexcept;
template<std::size_t I, typename T, std::size_t N>
constexpr const T&& std::get(const std::array<T, N>&& arr) noexcept;
Truy cập các phần tử của mảng.
Tham số
I
- Chỉ mục hằng số, là một giá trị số nguyên không âm (kiểu
std::size_t
), chỉ định phần tử cần truy cập. I
phải là một hằng số biên dịch (compile-time constant).- Nếu chỉ mục
I
lớn hơn hoặc bằng kích thước của std::array, chương trình sẽ không biên dịch hoặc dẫn đến lỗi thời gian chạy.
arr
- Tham chiếu đến std::array cần thao tác, có thể là lvalue hoặc rvalue.
Giá trị trả về
- Tham chiếu:
std::get
trả về một tham chiếu (T&
hoặcconst T&
) đến phần tử trong std::array tại chỉ mục đã chỉ địnhI
. - Rvalue: Nếu std::array được truyền vào là rvalue, std::get trả về một tham chiếu rvalue (
T&&
hoặcconst T&&
).
Đặc điểm
- Sử dụng để truy cập các phần tử của std::array hoặc các kiểu dữ liệu tổng quát khác như std::tuple. Hàm này là một phần của thư viện
<tuple>
. - std::get cho phép truy cập một phần tử trong std::array tại một chỉ mục cụ thể.
- Chỉ mục phải là một giá trị hằng số (constant expression) tại thời điểm biên dịch.
- Nếu chỉ mục nằm ngoài kích thước của std::array, chương trình sẽ không biên dịch hoặc sẽ gây ra hành vi không xác định.
- Tất cả các phần tử trong std::array phải có cùng kiểu dữ liệu, do đó std::get hoạt động nhất quán.
- std::get xác minh chỉ mục tại thời điểm biên dịch, giúp giảm thiểu lỗi khi truy cập.
- Do không kiểm tra biên tại thời gian chạy, std::get thường nhanh hơn các phương thức như
.at()
.
Ví dụ
#include <array> // Thư viện cần thiết cho std::array và std::get
#include <iostream>
int main() {
std::array<int, 3> myArray = {10, 20, 30};
// Truy cập phần tử bằng std::get
std::cout << "Phần tử đầu tiên: " << std::get<0>(myArray) << '\n';
std::cout << "Phần tử thứ hai: " << std::get<1>(myArray) << '\n';
std::cout << "Phần tử thứ ba: " << std::get<2>(myArray) << '\n';
// Thay đổi giá trị phần tử
std::get<1>(myArray) = 50;
std::cout << "Phần tử thứ hai (sau khi thay đổi): " << std::get<1>(myArray) << '\n';
return 0;
}
Các hàm liên quan
at | Truy xuất phần tử tại vị trí chỉ định |
[] | Truy xuất phần tử tại vị trí chỉ định |