C++에서 for 문은 크게 세 가지 형태로 사용할 수 있습니다. 각 형태와 용도에 대해 설명드리겠습니다.
for (int i = 0; i < 10; i++) {
// 반복문 내용
}
int arr[] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++) {
cout << arr[i] << " "; // 출력: 1 2 3 4 5
}
for (char c : str) {
// str 문자열의 각 문자를 c로 순회
}
std::vector, std::array, std::string)나 배열을 자동으로 순회c는 순회 중 각 요소를 참조#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {
string str = "Hello";
vector<int> nums = {1, 2, 3, 4, 5};
// 문자열 순회
for (char c : str) {
cout << c << " "; // 출력: H e l l o
}
cout << endl;
// 벡터 순회
for (int num : nums) {
cout << num << " "; // 출력: 1 2 3 4 5
}
cout << endl;
// 참조로 순회하여 값 수정
for (int& num : nums) {
num *= 2;
}
for (int num : nums) {
cout << num << " "; // 출력: 2 4 6 8 10
}
cout << endl;
return 0;
}
std::vector, std::list)에서 반복자를 사용해 순회하는 형태#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> nums = {1, 2, 3, 4, 5};
for (vector<int>::iterator it = nums.begin(); it != nums.end(); ++it) {
cout << *it << " "; // 출력: 1 2 3 4 5
}
cout << endl;
// 상수 반복자 (읽기 전용)
for (vector<int>::const_iterator it = nums.cbegin(); it != nums.cend(); ++it) {
cout << *it << " "; // 출력: 1 2 3 4 5
}
return 0;
}
break를 활용해 중간에 종료#include <iostream>
using namespace std;
int main() {
int count = 0;
for (;;) { // 무한 루프
cout << "Loop " << count << endl;
if (++count >= 5) break; // count가 5 이상이면 종료
}
return 0;
}
#include <iostream>
#include <map>
using namespace std;
int main() {
map<string, int> m = {{"Alice", 30}, {"Bob", 25}};
for (const auto& [key, value] : m) {
cout << key << ": " << value << endl;
}
return 0;
}
map의 key와 value를 각각 key, value 변수에 바인딩하여 사용할 수 있습니다.
while문은 조건에 따라 반복 실행되는 제어문이다.
for문과는 달리, 반복 횟수를 정하지 않고 조건이 참(true)인 동안 계속 실행되는 특징이 있다.
아래에 while문의 사용법과 다양한 활용법을 정리해보았다.
while (조건식) {
// 조건식이 참일 때 실행될 코드
}
true이면 코드 블록을 실행하고, 다시 조건식을 확인.false이면 반복문을 종료.#include <iostream>
using namespace std;
int main() {
int i = 1; // 초기값
while (i <= 5) { // 조건
cout << i << " "; // 1 2 3 4 5 출력
i++; // 증감
}
return 0;
}
while (true)를 사용하면 조건이 항상 참이므로 무한히 반복된다.break로 제어.#include <iostream>
using namespace std;
int main() {
while (true) {
int input;
cout << "숫자를 입력하세요 (0 입력 시 종료): ";
cin >> input;
if (input == 0) {
cout << "프로그램 종료" << endl;
break; // 반복문 종료
}
cout << "입력한 숫자: " << input << endl;
}
return 0;
}
do-while문do-while문은 최소 한 번은 코드 블록을 실행한 뒤 조건을 확인한다.do {
// 실행할 코드
} while (조건식);
#include <iostream>
using namespace std;
int main() {
int num;
do {
cout << "양수를 입력하세요: ";
cin >> num;
} while (num <= 0); // 조건 확인
cout << "입력한 숫자: " << num << endl;
return 0;
}
while문과 배열 활용while문을 사용해 배열 요소를 순회할 수 있다.#include <iostream>
using namespace std;
int main() {
int arr[] = {1, 2, 3, 4, 5};
int size = sizeof(arr) / sizeof(arr[0]);
int i = 0, sum = 0;
while (i < size) {
sum += arr[i]; // 배열 요소 합산
i++;
}
cout << "배열의 합: " << sum << endl; // 출력: 15
return 0;
}
#include <iostream>
using namespace std;
int main() {
int num = -1;
while (num != 0) {
cout << "0을 입력하면 종료됩니다. 숫자를 입력하세요: ";
cin >> num;
}
cout << "프로그램 종료" << endl;
return 0;
}
while문while문을 중첩하여 2차원 데이터를 처리할 수 있다.#include <iostream>
using namespace std;
int main() {
int matrix[2][3] = {{1, 2, 3}, {4, 5, 6}};
int row = 0;
while (row < 2) {
int col = 0;
while (col < 3) {
cout << matrix[row][col] << " "; // 출력: 1 2 3 4 5 6
col++;
}
cout << endl;
row++;
}
return 0;
}
continue와 함께 사용continue를 사용하면 특정 조건에서 나머지 코드를 건너뛰고 다음 반복으로 넘어간다.#include <iostream>
using namespace std;
int main() {
int i = 0;
while (i <= 10) {
i++;
if (i % 2 != 0) {
continue; // 홀수는 건너뜀
}
cout << i << " "; // 출력: 2 4 6 8 10
}
return 0;
}
while vs forwhile문은 반복 횟수가 불확실하거나 조건으로 제어해야 하는 경우 적합하다.for문은 반복 횟수가 명확한 경우에 적합하다.#include <iostream>
using namespace std;
int main() {
while (true) {
int choice;
cout << "1. 메뉴 A\n2. 메뉴 B\n3. 종료\n선택: ";
cin >> choice;
if (choice == 1) {
cout << "메뉴 A를 선택했습니다.\n";
} else if (choice == 2) {
cout << "메뉴 B를 선택했습니다.\n";
} else if (choice == 3) {
cout << "프로그램을 종료합니다.\n";
break;
} else {
cout << "잘못된 입력입니다. 다시 시도하세요.\n";
}
}
return 0;
}
while문은 조건에 따라 반복하는 경우 적합하며, 반복 횟수가 사전에 정해지지 않았을 때 주로 사용된다.do-while은 최소 한 번 실행이 보장되는 경우에 사용된다.break와 continue로 제어할 수 있으며, 다양한 형태로 활용할 수 있다.