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
써놓고 보니 정말 쓸데없네
6번 무슨 의미임?
헉시발 짤렸네
6번 궁금한데 수정해주면 안될가..
집가서 바로 수정함 근데 별거아님
gcd c++17에서 표준됬음 그냥 std::gcd로 사용가능
갤매 살아계셨군요
for each 구문을 제공하는게 아니라range based for를 제공하는거겠지for_each는 stl 알고리즘 함수로 ps하면서 쓸 일은 없을거라고 본다string 10개 받고 싶을 때vector<string> v(10):for (auto& str : v) cin >> str;끝개꿀
앗 잘못썼다
개추