1. 


pair p; 같은게 있을 때 p=make_pair(3,4);와 같이 쓰는 대신 p={3,4}와 같이 쓸 수 있다

이건 항상 성립해서 pair> p={2,{3.4,5}}; 처럼 해도 된다


2.


당연히 벡터 덱 셋 리스트등에 대해서도 성립한다

ex) vector={2,3,4,6};

하지만 스택하고 큐에서는 불가능하다고 하는데 17에선 어쩔지 모르겠다 그냥 넣자


3. 


모두 알겠지만 리눅스 기반에서는 bits/stdc++.h 헤더를 사용할 수 있다

쓸 수 있는 거의 모든 헤더파일이 들어가 있어서 매우 편하다

하지만 니가 리눅스를 쓰지 않는다면 그냥 인터넷에서 bits/stdc++.h를 다운받아서 쓰면 된다


4.


생각보다 C++ 헤더에는 구현되어 있는 기본적인 함수가 많다

예를 들어 __gcd(T a, T b) 같은 경우는 심플하게 최대공약수를 구해준다

__builtin_어쩌구 계열은 비트 연산과 관련된 함수들이 많이 있다


또 clz ctz popcount등이 있는데 비트마스크 관련 작업을 할때

32~64번 연산을 상수 시간에 연산을 가능하게 해준다

체제에 의존적이라서 못쓸수도 있는걸로 알고있다

알아두면 생각보다 쓸모있다


5.


C++은 for-each 구문을 제공한다


예시

vector V={1,2,3,4}

for(int x : V){ // do something}

하면 원소를 x에 대입해서 쫙 처음부터 끝까지 훑는다


for(int &x : V){ // do something}

하면 원래 컨테이너의 원소도 수정가능하다


6.


2차원 배열 출력해야 할 때

for(int i=0;i

하면 괄호가 줄어든다 


7.


정렬함수 따로짜기 귀찮을때

sort(V,V+n,[&](int a, int b){ //어쩌구 저쩌구;} );

어쩌구 저쩌구는 a


써놓고 보니 정말 쓸데없네