Vòng lặp lồng nhau (Nested Loops)
Vòng lặp lồng nhau là một vòng lặp nằm bên trong một vòng lặp khác, thường dùng để xử lý dữ liệu nhiều chiều.
Ví dụ cơ bản: bảng cửu chương
Phần tiêu đề “Ví dụ cơ bản: bảng cửu chương”#include <iostream>
int main() { for (int i = 1; i <= 3; i++) { for (int j = 1; j <= 3; j++) { std::cout << i << " x " << j << " = " << (i * j) << std::endl; } std::cout << "---" << std::endl; } return 0;}Vẽ hình tam giác
Phần tiêu đề “Vẽ hình tam giác”#include <iostream>
int main() { int n = 5; for (int i = 1; i <= n; i++) { for (int j = 0; j < i; j++) { std::cout << "*"; } std::cout << std::endl; } // * // ** // *** // **** // ***** return 0;}Duyệt mảng 2 chiều
Phần tiêu đề “Duyệt mảng 2 chiều”#include <iostream>#include <vector>
int main() { std::vector<std::vector<int>> matrix = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
for (const auto& row : matrix) { for (int value : row) { std::cout << value << " "; } std::cout << std::endl; }
return 0;}Thoát khỏi nhiều vòng lặp lồng nhau
Phần tiêu đề “Thoát khỏi nhiều vòng lặp lồng nhau”break chỉ thoát khỏi vòng lặp gần nhất chứa nó. Để thoát nhiều tầng vòng lặp cùng lúc, cần dùng biến cờ (flag) hoặc goto:
#include <iostream>
int main() { bool found = false; for (int i = 0; i < 3 && !found; i++) { for (int j = 0; j < 3; j++) { if (i == 1 && j == 1) { found = true; break; // Chỉ thoát vòng lặp j, không thoát vòng lặp i } std::cout << i << "," << j << " "; } } return 0;}Tổng kết
Phần tiêu đề “Tổng kết”breakchỉ thoát khỏi vòng lặp trong cùng (gần nhất) - dùng biến cờ (flag) hoặcgotonếu cần thoát nhiều tầng- Vòng lặp lồng nhau thường dùng để xử lý mảng nhiều chiều, in hình học, tìm kiếm trên ma trận