Duyệt bằng vòng lặp for
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 14 trên 56.
Giờ bạn đã biết cách truy cập từng phần tử và kiểm tra kích thước của một vector, hãy cùng tìm hiểu cách xử lý lần lượt mọi phần tử bằng vòng lặp for truyền thống (traditional for loop). Cách này kết hợp phương thức (method) .size() với cách truy cập dựa trên chỉ số để duyệt từng phần tử theo thứ tự.
Vòng lặp for truyền thống dùng một biến chỉ số bắt đầu từ 0 và tăng dần cho đến khi đạt đến kích thước của vector:
std::vector<std::string> names = {"Alice", "Bob", "Charlie"};
for (int i = 0; i < names.size(); i++) {
std::cout << names[i] << std::endl;
}Trong ví dụ này, điều kiện vòng lặp i < names.size() đảm bảo chúng ta không vượt quá giới hạn của vector, còn names[i] truy cập từng phần tử bằng chỉ số hiện tại. Vòng lặp sẽ in từng tên trên một dòng riêng.
Mẫu này rất quan trọng khi xử lý các tập dữ liệu. Biến chỉ số i giúp bạn kiểm soát chính xác phần tử đang thao tác, rất hữu ích khi bạn cần biết vị trí của từng phần tử hoặc muốn sửa đổi các phần tử trong quá trình lặp.
Lưu ý rằng sau khi vòng lặp kết thúc, i bằng names.size(), trong trường hợp này là 3, vì vòng lặp dừng ngay khi điều kiện i < names.size() trở thành sai.
Thử thách
DễTạo một chương trình dùng vòng lặp for truyền thống để duyệt qua một vector tên sản phẩm và hiển thị chúng dưới dạng danh sách được đánh số.
Chương trình sẽ nhận các đầu vào sau:
- Một số nguyên
nbiểu thị số lượng sản phẩm - Sau đó là
nchuỗi tên sản phẩm
Chương trình của bạn cần:
- Tạo một
std::vector<std::string>có tênproducts - Dùng
push_back()để thêm từng tên trong sốnsản phẩm vào vector - Dùng vòng lặp for truyền thống với một biến chỉ số để duyệt qua vector
- Trong vòng lặp, dùng phương thức
.size()làm điều kiện của vòng lặp - Dùng toán tử ngoặc vuông
[]để truy cập từng phần tử theo chỉ số - In từng sản phẩm cùng số thứ tự của sản phẩm đó, bắt đầu từ 1, theo định dạng đã chỉ định
Dùng chính xác định dạng đầu ra sau:
Product 1: [first product name]
Product 2: [second product name]
Product 3: [third product name]
...Vòng lặp for cần bắt đầu với chỉ số 0, dùng i < products.size() làm điều kiện và tăng i sau mỗi lần lặp. Khi in, hãy cộng 1 vào chỉ số để hiển thị số thứ tự bắt đầu từ 1.
Tự làm thử
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {
// Đọc số lượng sản phẩm
int n;
cin >> n;
// Tạo một vector để lưu tên sản phẩm
vector<string> products;
// Đọc tên sản phẩm và thêm vào vector
for (int i = 0; i < n; i++) {
string product;
cin >> product;
products.push_back(product);
}
// TODO: Viết code của bạn bên dưới
// Dùng vòng lặp for truyền thống để duyệt vector
// và in ra từng sản phẩm kèm số thứ tự của sản phẩm đó
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