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

std::deque::operator[]

#include <deque>

      reference operator[] (size_type n);
const_reference operator[] (size_type n) const;

Truy cập đọc/ghi giá trị trực tiếp vào các phần tử của deque thông qua chỉ số (index) của chúng.

Tham số

n

  • Chỉ số (index) của phần tử cần truy cập, kiểu size_type (thường là std::size_t).
  • Chỉ số hợp lệ nằm trong khoảng từ 0 đến size() - 1.

Giá trị trả về

  • reference (phiên bản không const):
    • Trả về một tham chiếu (có thể đọc và ghi) đến phần tử tại vị trí n. Bạn có thể sử dụng tham chiếu này để thay đổi giá trị của phần tử.
  • const_reference (phiên bản const):
    • Trả về một tham chiếu hằng (chỉ đọc) đến phần tử tại vị trí n. Phiên bản này được sử dụng khi deque là một đối tượng const.

Đặc điểm

  1. Toán tử [] cho phép truy cập trực tiếp vào phần tử tại vị trí n với độ phức tạp O(1) - thời gian hằng số, rất nhanh chóng.
  2. Toán tử [] không kiểm tra xem chỉ số n có nằm trong phạm vi hợp lệ hay không (từ 0 đến size() - 1). Nếu truy cập ngoài phạm vi, hành vi sẽ là không xác định (undefined behavior), có thể dẫn đến lỗi hoặc crash chương trình.
  3. Deque cũng cung cấp hàm at() để truy cập phần tử theo chỉ số. at() có kiểm tra phạm vi và ném ra ngoại lệ std::out_of_range nếu chỉ số không hợp lệ, an toàn hơn [] nhưng chậm hơn một chút.
  4. Toán tử [] trả về tham chiếu, cho phép bạn thay đổi trực tiếp giá trị của phần tử.
  5. Phiên bản const được sử dụng cho các đối tượng deque const, đảm bảo tính an toàn về const.

Ví dụ

#include <iostream>
#include <deque>

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

std::cout << myDeque[5] << '\n'; // Truy cập ngoài phạm vi, hành vi không xác định!

myDeque[-1] = 10; // Truy cập ngoài phạm vi, hành vi không xác định!

return 0;
}

Các hàm liên quan

atCung cấp cách thức truy cập an toàn đến các phần tử của deque thông qua chỉ số (index)
frontTrả về tham chiếu đến phần tử đầu tiên trong deque
backTrả về tham chiếu đến phần tử cuối cùng trong deque