그냥 게임개발자

for in range 본문

내 개인적인 공부/자료구조

for in range

sudoju 2024. 4. 13. 14:04

for in range

음..

반복문인데 C++11에서 효율적인 반복문이라는 것이 추가가 되었어요.

 

쓸만함!

근데 저는 아직 습관이 덜 되어서 for (int i = 0; i < 아직 이런...것을 쓰지만

제가 C++를 많이 해보지는 않았지만

C#에서도 똑같은 for in range가 있는데 foreach라고 근데 그거 속도 느리대요.

실제 해봤는데

조금 차이가 있어요.

이유는 나중에 설명할게요.

 

아무튼!

 

C++에서 사용하는 범위기반 for 루프

vecotr만 쓸 수 있는 것이 아니라 순회할 수 있는 컨테이너라면 다 사용할 수 있습니다.

 

vector, Array, map 등 다 사용 가능합니다.

 

for (range_declaration : range_expression)
    loop_statement

 

이거 뭔소리야

 

진짜 제가 영어만 잘했잖아요?

모든 자료구조 다 정의 들어가가지고 다 해석할 사람이에요

근데 영어몰라서 안함

진짜

진짜로

 

콱 진짜로

for (range_declaration : range_expression)
    loop_statement

 

해석해봐요

???

왜 loop_statement만 빼

???

papago도 똑같네;;

 

그냥 그거에요.

for (표현할 부분 : 표현이 될 범위)
    표현할 부분을사용

이런식으로 생각하기로했어요 저는

 

그렇다면 이와 같겠죠?

for (<컨테이너 안의 타입> 변수명 : 컨테이너)

그러면 말로만으로 사용 방법을 모를 수 있으니 직접 활용해봅시다.

 

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector<int> vec { 1, 2, 3 };
    
    // 범위기반 for문
    // 타입 변수명   컨테이너
    for (int entity : vec)
        cout << entity << ' ';		// 사용
        
    cout << '\n';
        
    // 원래 for문
    for (int i = 0; i < vec.size(); ++i)
        cout << vec[i] << ' ';
        
    cout << '\n';
        
    vector<pair<int, int>> vecPair = { { 1, 2 }, { 3, 4 } };
    for (pair<int, int> entityPair : vecPair)
        cout << entityPair.first << ", " << entityPair.second << "\n";
        
    cout << '\n';
    
    return 0;
}

 

pair로 담는다면  표현할 타입에도 컨테이너 안에 있는 타입을 적는 거니 pair로 써줘야겠죠?

 

결과값은 이래요

 

 

음음 완벽해요

아래는 똑같은 기능을 합니다.

for (int entity : vec)
for (int i = 0; i < vec.size(); ++i)

 

끄읕

'내 개인적인 공부 > 자료구조' 카테고리의 다른 글

vector를 통해서 2차원 배열 만들기  (0) 2024.04.13
vector의 정적할당?  (0) 2024.04.13
[C++] vector - 함수들  (0) 2024.04.13
C++ - vector  (1) 2024.04.13
자료구조란?  (0) 2024.04.12