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

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ặc const T&) đến phần tử trong std::array tại chỉ mục đã chỉ định I.
  • Rvalue: Nếu std::array được truyền vào là rvalue, std::get trả về một tham chiếu rvalue (T&& hoặc const T&&).

Đặc điểm

  1. 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>.
  2. 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ể.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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

atTruy xuất phần tử tại vị trí chỉ định
[]Truy xuất phần tử tại vị trí chỉ định