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 30Phươ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.
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
nbiểu thị số phần tử trong vector - Sau đó là
nsố nguyên để điền vào vector - Một số nguyên
index1biểu thị chỉ số đầu tiên cần truy cập - Một số nguyên
index2biểu thị chỉ số thứ hai cần truy cập
Chương trình của bạn cần:
- Tạo một
std::vector<int>có têndata - Dùng
push_back()để thêm từng số trongnsố đầu vào vào vector - Truy cập phần tử tại
index1bằng toán tử ngoặc vuông[]và lưu phần tử đó vào biến có tênvalue1 - Truy cập phần tử tại
index2bằng phương thức.at()và lưu phần tử đó vào biến có tênvalue2 - In ra các giá trị đã truy cập cùng với chỉ số tương ứng
- 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;
}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
1Con trỏ và bộ nhớ
Con trỏ là gì?Toán tử lấy địa chỉToán tử giải tham chiếuCon trỏ nullCon trỏ và mảngBộ nhớ động với newGiải phóng bộ nhớ với deleteÔn tập: luyện tập về con trỏ2Vector (mảng động)
Giới thiệu std::vectorTạo vectorThêm phần tửTruy cập phần tửKích thước vectorDuyệt bằng vòng lặp forVòng lặp for dựa trên phạm viXóa phần tửÔn tập: các thao tác với vector5Dự án: Công cụ quản lý hàng tồn kho
Thiết lập dự ánThêm và cập nhật mặt hàng3Dự án: Công cụ danh sách công việc
Tổng quan dự ánThêm công việc6Tập hợp (các phần tử duy nhất)
Giới thiệu std::setTạo tập hợp và thêm phần tửKiểm tra phần tửXóa phần tửDuyệt qua tập hợpÔn tập: các số duy nhấtTự luyện tập: Trình biên dịch C++ online