하 진짜.... 이게 내 길인지 모르겠다.
그냥 적성에도 안 맞는거 꾸역 꾸역 하고 있는 느낌인데... 나이도 이제 적지 않은데 이거 이렇게 잡고 있는게 맞는가 하....
깝깝함
암튼 일단 프로그래밍을 언어를 배우게 되면 우선 가장먼저 배우는게 두 가지가 있는데 내 생각에는 바로
1. if
2. for
라고 생각한다. if는 분기처리 for는 반복
if는 사람이 판단하는것 처럼 조건을 걸어 컴퓨터 대신에 사람이 판단조건을 넣어주고
for는 사람이 할 수 없는 컴퓨터의 특기인 엄청난 양의 반복을 시키는 명령어 이다.
가장먼저 배우기 때문에 나같이 하 프로그래밍에 특별히 재능이 없거나 크게 목숨걸지 않는 사람들은 제일 처음 배운 그 원형 형태의 for 문을 사골을 우려먹을때 까지 사용할거다.
하 그런데 나처럼 짬이 좀 찾는데 아직도 그 원형 형태의 for 문을 사용하면 선배님들에게 한소리 듣기 좋다.
일단 내가 처음 배운 이후로 주구 장창 잘 사용하고 있는 for 문을 보자.
옛날 초보 방식
std::string subject[] = {"국어", "영어", "수학"};
for (int i = 0; i < sizeof(subject); i++) {
std::cout << subject[i] << std::endl;
}
이렇게 라도 사용하면 다행이다.
더 초창기에는
for (int i = 0; i < 3; i++) {
std::cout << subject[i] << std::endl;
}
내 추측으로 i가 3보다 크면 안되니 판단해서 거의 하드코딩으로 범위를 지정해 줬었다.
하지만 특별한 이유없이 이런식으로 코드를 작성하면 개무시 받기 좋고 c++11 부터 사용할 수 있는 range-based loop를 모른다면 더욱 비참해지기 마련이니 혹시라도 지금 이글을 보시는 분들중에 몰랐던 분은 조금만 시간 투자해서 같이 보도록 하자.
투자한 시간은 10분 남짓일텐데 아마 지킬수 있는 자존감은 그 값을 넘어서고도 남을 것이다. 나야 뭐... 이미 너덜너덜해졌지만.... 하 그냥 평생 게임만 하면서 살고 싶은데... 세상살이가 그렇게 되지 않는다.
range based for 사용하기
하
일단 위 내용을 기준으로 지금 나는 subject라는 배열 안에 든 값을 출력을 하고 싶은거다.
그러면 힘들게 subject 사이즈를 구할 필요없이 c++11 에서 제공하는 기능을 사용하면 배열의 크기를 알아서 판단해서 for 문을 돌려 준다.
구체적인 문법은 이렇다.
std::string subject[] = {"국어", "영어", "수학"};
for (std::string i : subject) {
std::cout << i << std::endl;
}
기존 for 문처럼 () 안에 3항을 넣어주는것이 아니라
i ==> 순환하며 값을 받을 변수
: ==> 구분자
subject ==> 순환하며 값을 읽을 배열
이렇게만 주면 알아서 c++ 이 내부적으로 사이즈를 판단해 배열을 출력해주는 것이다.
여기서 한번더 간단하게 할 수 있다.
std::string subject[] = {"국어", "영어", "수학"};
for (auto i : subject) {
std::cout << i << std::endl;
}
i의 타입을 auto로 넣어주면 알아서 subject 안에서 순환하는 타입을 판단해서 i를 선언하고 값을 넣어준다.
이렇게 함으로써 코드 가독성이 좋아지고 사이즈 판단을 잘못해서 불필요한 오류가 발생할 가능성을 줄일 수 있는 것이다.
코드가 좋아지니 적극적으로 활용하도록 하자!
아 그리고 usging namespace std; 이거 쓰면 또 욕쳐먹기 좋으니까 사용하지 말자.
이유는 다음 포스팅에!!
'Programming > c++' 카테고리의 다른 글
c++ include 시 <> 와 "" 의 차이 (0) | 2020.08.23 |
---|---|
[맥] 맥에서 C++ 사용하기!!! (0) | 2020.02.01 |
알고리즘에 쏠쏠한 swap 함수 (0) | 2019.08.20 |