Bỏ qua để đến nội dung

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.

#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;
}
#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;
}
#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;
}

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;
}
  • break chỉ thoát khỏi vòng lặp trong cùng (gần nhất) - dùng biến cờ (flag) hoặc goto nế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