Menu
CoddyTech

Truy cập phần tử

Thuộc phần Logic và luồng chương trình trong hành trình C++ của Coddy. Bài học 12 trên 56.

Giờ đây, khi đã biết cách tạo vector và thêm phần tử vào đó, bạn cần biết cách lấy các phần tử cụ thể từ vector. C++ cung cấp hai cách chính để truy cập từng phần tử: toán tử ngoặc vuông và phương thức .at().

Toán tử dấu ngoặc vuông [] hoạt động giống như với các mảng thông thường. Bạn chỉ định chỉ số của phần tử muốn truy cập:

std::vector<int> numbers = {10, 20, 30, 40};
int first = numbers[0];    // Lấy 10
int third = numbers[2];    // Lấy 30

Phương thức .at() cung cấp một cách khác để truy cập các phần tử, với một điểm khác biệt quan trọng: phương thức này kiểm tra giới hạn:

int first = numbers.at(0);    // Lấy 10
int third = numbers.at(2);    // Lấy 30

Điểm khác biệt chính là độ an toàn: nếu bạn cố truy cập một chỉ số không tồn tại, [] có thể gây ra hành vi khó đoán, còn .at() sẽ ném ngoại lệ để báo cho bạn biết về lỗi. Để học tập, cả hai phương thức đều hoạt động tốt, nhưng .at() giúp bảo vệ tốt hơn, tránh truy cập vào các vị trí không hợp lệ trong mảng vector của bạn.

challenge icon

Thử thách

Dễ

Tạo một chương trình minh họa cách truy cập phần tử trong vector bằng cách lấy các phần tử cụ thể từ một vector, sử dụng cả toán tử ngoặc vuông và phương thức .at().

Chương trình sẽ nhận các đầu vào sau:

  • Một số nguyên n biểu thị số phần tử trong vector
  • Sau đó là n số nguyên để điền vào vector
  • Một số nguyên index1 biểu thị chỉ số đầu tiên cần truy cập
  • Một số nguyên index2 biểu thị chỉ số thứ hai cần truy cập

Chương trình của bạn cần:

  1. Tạo một std::vector<int> có tên data
  2. Dùng push_back() để thêm từng số trong n số đầu vào vào vector
  3. Truy cập phần tử tại index1 bằng toán tử ngoặc vuông [] và lưu phần tử đó vào biến có tên value1
  4. Truy cập phần tử tại index2 bằng phương thức .at() và lưu phần tử đó vào biến có tên value2
  5. In ra các giá trị đã truy cập cùng với chỉ số tương ứng
  6. In ra phần tử đầu tiên và cuối cùng của vector bằng cách truy cập theo chỉ số

Dùng đúng định dạng đầu ra sau:

Element at index [index1]: [value1]
Element at index [index2]: [value2]
First element: [first value]
Last element: [last value]

Để truy cập phần tử cuối cùng, dùng data.size() - 1 làm chỉ số với toán tử ngoặc vuông.

Tự làm thử

#include <iostream>
#include <vector>
using namespace std;

int main() {
    // Đọc đầu vào
    int n;
    cin >> n;
    
    vector<int> data;
    
    // Đọc n số nguyên và thêm vào vector
    for (int i = 0; i < n; i++) {
        int num;
        cin >> num;
        data.push_back(num);
    }
    
    int index1, index2;
    cin >> index1;
    cin >> index2;
    
    // TODO: Viết code của bạn bên dưới
    // Truy cập các phần tử bằng toán tử [] và phương thức .at()
    // Lưu các giá trị vừa truy cập vào value1 và value2
    
    // In kết quả ra
    cout << "Element at index " << index1 << ": " << value1 << endl;
    cout << "Element at index " << index2 << ": " << value2 << endl;
    cout << "First element: " << /* truy cập phần tử đầu tiên */ << endl;
    cout << "Last element: " << /* truy cập phần tử cuối cùng bằng data.size() - 1 */ << endl;
    
    return 0;
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng chương trình

Tự luyện tập: Trình biên dịch C++ online