본문 바로가기
프로그래밍 언어/C++

범위 기반 for 문

by 거북이의 기술블로그 2024. 5. 15.

 

범위기반 for 문 이란?
  • 배열과 같은 iterator 구문에 있어서 값을 가져오는데 편의성을 주고자 C++11 에서 추가된 기능
vector<int> vec_ = {1,2,3,4};

for (int value : vec_)
{
	std::cout << value << " ";
}

이러한 형태를 가진다.

 

 

범위기반 for문 왜 사용하는가?
  • 장점
    • 처음과 끝을 지정해주지 않아도 순차적으로 iterator를 돌며 값을 가져올 수 있다.
    • 값을 순차적으로 가져오기에는 유용하다
  • 단점
    • 인덱싱이 불편하다 ( 인덱싱을 줄이고자 가져온 형태이므로.. 일반적인 for문 추천...)
    • 값을 변경하기가 까다롭다 (값을 변경하려면 포인터 혹은 참조자를 사용해야한다.)

 

끄저끄적 간단한 예제
  • 일반적인 for문 형태
vector<int> vec_ = { 1,2,3,4,5 };

for (int i = 0; i < vec_.size(); i++)
{
	cout << vec_[i] << " ";
}

 

  • 범위기반 for문 형태
vector<int> vec_ = { 1,2,3,4,5 };

for (int value : vec_)
{
	cout << value << " ";
}

 

  • 범위기반 for문 (값 변경 - pointer)
int* test_ptr[4];

int test[4] = { 1,2,3,4 };

for (int i = 0; i < 4; i++)
{
	test_ptr[i] = &test[i];
}

vector<string> vec_string = { "abc", "cde" };

for (int* value : test_ptr)
{
	(*value)++;
}

for (int value : test)
{
	cout << value << " ";
}

 

  • 범위기반 for문 (값 변경 - reference)
vector<double> test_ = { 1.1, 1.2, 1.3, 1.4 };

for (double& value : test_)
{
	value++;
}

for (double change_value : test_)
{
	cout << change_value << " ";
}

 

후기..

 순차적으로 어떠한 값들을 확인하는 용도로 사용할 때 주로 사용하고, 아닌 경우에는 굳이 사용하지 않을 거 같은 느낌이 든다... (아직까지는 일반적인 for 문 형태가 편한 느낌 (?)... 적응해야지...)

 

 

'프로그래밍 언어 > C++' 카테고리의 다른 글

자료형  (0) 2024.06.21
배열  (0) 2024.05.31
std::cin 정리  (0) 2024.05.31
C++ string 라이브러리  (0) 2024.05.29