상세 컨텐츠

본문 제목

알쓸신잡: c++ 문법

알고리즘

by lazz 2021. 8. 2. 00:25

본문

반응형

알고리즘에 쓸모있는 신기한 잡기술 c++

c++에는 알아두면 코드가 간결해지는 좋은 문법들이 있다. 아래 목록은 내가 주로 사용하는 문법들이고, 새로운 문법을 배울때마다 내용을 더하고 있다.

대부분 c++11에 추가된 문법들이다.

 

pair

pair<int, int> q;
q.push({x, y});
// q.push(make_pair(x, y));

 

pair 타입을 {}로 감싸면 make_pair를 생략하고 생성할 수 있다.

for loop

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;
}

요런것도 가능하다.

 

auto

자동으로 타입을 추론해주는 키워드다. 선언에 사용할 수 없고 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만 가능하다.

반응형

'알고리즘' 카테고리의 다른 글

비트마스크  (0) 2021.08.02

관련글 더보기

댓글 영역