c++에는 알아두면 코드가 간결해지는 좋은 문법들이 있다. 아래 목록은 내가 주로 사용하는 문법들이고, 새로운 문법을 배울때마다 내용을 더하고 있다.
대부분 c++11에 추가된 문법들이다.
pair<int, int> q;
q.push({x, y});
// q.push(make_pair(x, y));
pair 타입을 {}로 감싸면 make_pair를 생략하고 생성할 수 있다.
vector<int> numbers = {....};
for(int number : numbers) {
cout << number << endl;
}
자바의 enhanced for loop과 비슷한 c++의 range-based for loop. 인덱스가 필요 없을 때 vector를 순회하기 위해 사용한다.
주의할 점은 number 변수는 복사된 값이므로 값을 변경해도 실제 vector 원소에는 영향이 없다. 만약 실제 값을 수정해야 한다면 기존 index를 이용해 포문을 돌거나
for(int& number : numbers) {
number++;
}
이렇게 참조형으로 선언해야 한다.
for(int number : {1, 2, 3, 4}) {
cout << number << endl;
}
요런것도 가능하다.
자동으로 타입을 추론해주는 키워드다. 선언에 사용할 수 없고 rvalue에 따라 lvalue 타입을 자동으로 맞춰준다.
queue<pair<int, int> > q;
auto p = q.front();
// pair<int, int> p = q.front();
이렇게 선언하면 p는 자동으로 pair<int, int> 타입으로 선언된다.
list<int> lst;
for(auto it = lst.begin(); it != lst.end(); ++it)
//for(list<int> iterator::it = lst.begin(); it != lst.end(); ++it)
iterator 치기 귀찮을 때도 자주 사용한다.
queue<pair<int, int> > q;
auto [x, y] = q.front();
// int x = q.front().first, y = q.front().second;
auto를 사랑하는 이유. 주의점은 int [x, y] 이런식으로 사용할 수 없고 auto만 가능하다.
댓글 영역