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

std::deque::at

#include <deque>

      reference at(size_type n);
const_reference at(size_type n) const;

Cung 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), tương tự như toán tử [], nhưng có kiểm tra phạm vi hợp lệ.

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. at() được sử dụng để truy cập và đọc/ghi giá trị của phần tử tại vị trí n trong deque.
  2. at() 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 chỉ số không hợp lệ, at() sẽ ném ra ngoại lệ std::out_of_range.
  3. Nhờ kiểm tra phạm vi, at() an toàn hơn toán tử []. Sử dụng at() giúp bạn tránh được hành vi không xác định khi truy cập ngoài phạm vi của deque.
  4. at() trả về tham chiếu, cho phép bạn thay đổi trực tiếp giá trị của phần tử.
  5. Bạn nên sử dụng khối try-catch để xử lý ngoại lệ std::out_of_range khi sử dụng at().
  6. Độ phức tạp: O(1) - Thời gian hằng số. Việc truy cập phần tử bằng at() rất nhanh, tương đương với toán tử [].

Ví dụ

#include <iostream>
#include <deque>

int main() {
std::deque<int> myDeque = {10, 20, 30, 40, 50};

// Truy cập và in ra phần tử thứ ba (chỉ số 2)
std::cout << "Third element: " << myDeque.at(2) << '\n'; // Output: Third element: 30

// Thay đổi giá trị của phần tử đầu tiên (chỉ số 0)
myDeque.at(0) = 99;

// In ra toàn bộ deque
std::cout << "myDeque:";
for (int i = 0; i < myDeque.size(); ++i) {
std::cout << ' ' << myDeque.at(i);
}
std::cout << '\n'; // Output: myDeque: 99 20 30 40 50

return 0;
}

Các hàm liên quan

[]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
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