반응형
범위 기반 for 반복문
int scores[3] = { 10, 20, 30};
for ( int score : scores)
{
std::cout << scores << " " << std::endl;
}
for 반복문을 더 간단하게 쓸 수 있습니다. 가독성이 더 높습니다. STL 컨테이너와 C 스타일 배열 모두에서 작동합니다.
auto 키워드를 범위 기반 for 반복에 쓸 수 있습니다. 컨테이너/배열을 역순회할 수 없습니다.
값, 참조, const
std::map<std::string int> scoreMap;
for(auto score : scoreMap)
{
score.second -= 10;
std::cout << score.first << " : " << score.second << std::endl;
}
for(auto& score : scoreMap)
{
score.second -= 10;
std::cout << score.first << " : " << score.second << std::endl;
}
for(const auto& score : scoreMap)
{
score.second -= 10;
std::cout << score.first << " : " << score.second << std::endl;
}
범위 기반 반복문을 사용할 때, 실제 변수 값을 변경하기 위해서는 참조를 넣어주어야 합니다. 그렇지 않은 경우에는 const를 넣어주거나 값만 넣어주어도 무방합니다.
예제
#include <vector>
#include <iostream>
#include "RangeBasedForLoopExample.h"
using namespace std;
namespace samples
{
void RangeBasedForLoopExample()
{
vector<int> nums;
nums.reserve(5);
nums.push_back(1);
nums.push_back(2);
nums.push_back(3);
nums.push_back(4);
nums.push_back(5);
for (int n : nums)
{
n++;
}
cout << "Print nums:" << endl;
for (auto it = nums.begin(); it != nums.end(); ++it)
{
cout << *it << endl;
}
for (int& n : nums)
{
n--;
}
cout << "Print nums again:" << endl;
for (auto it = nums.begin(); it != nums.end(); ++it)
{
cout << *it << endl;
}
}
}
range based for문과 일반적인 반복자를 활용한 for문에 대한 예제입니다. 범위 기반 for문을 쓸 수 있는 경우에는 이러한 for문을 활용하면 가독성도 높이고 깔끔하게 구현이 가능합니다.
반응형
'개발자 > C++(Linux, Window)' 카테고리의 다른 글
[C++] STL pair 클래스(퍼옴) (0) | 2021.09.21 |
---|---|
C++ 주요 STL 한 방 정리 (Container, Adapter 등등) (0) | 2021.09.20 |
[C++] STL 2차원 vector 정의 및 사용 (0) | 2021.09.20 |
[VSCode] macOS에서 Visual Studio Code로 C/C++ 코딩하기(2) - 디버깅을 위한 tasks.json, launch.json 설정 (0) | 2021.07.25 |
Wrapper 클래스 (0) | 2021.03.24 |