[C++]size() 함수의 주의점
일반적인 상황에서는 괜찮지만 v.size() - 1처럼 뺄셈이 들어갈 때는 unsigned라는 점이 문제를 일으킨다. 만약 v의 size()가 0이라면 1을 뺄 때 오버플로우가 발생하여 UNSIGNED_INT_MAX의 값으로 바뀐다. 따라서 뺄셈이 들어가고, size가 0이 될 가능성이 있을 때는 반드시 (int)v.size() - 1 이렇게 강제 형변환을
일반적인 상황에서는 괜찮지만 v.size() - 1처럼 뺄셈이 들어갈 때는 unsigned라는 점이 문제를 일으킨다. 만약 v의 size()가 0이라면 1을 뺄 때 오버플로우가 발생하여 UNSIGNED_INT_MAX의 값으로 바뀐다. 따라서 뺄셈이 들어가고, size가 0이 될 가능성이 있을 때는 반드시 (int)v.size() - 1 이렇게 강제 형변환을
소수 판별법 O(n): 1~n-1까지 전부 나눠보고 나눠지지 않는 것을 확인한다. bool isPrime(int n) { if (n == 1) return false; for (int i = 2; i < n; i++) if (n % i == 0) return false; return true; } O(n^(1/2)): 1~n^(1/2
unique 함수는 벡터에서 중복된(버릴) 원소들을 맨 뒤로 옮겨준다. 그리고 버릴 원소들의 시작점을 반복자로 리턴한다. 단, 이 함수는 중복된 원소가 연속적으로 존재할 때에만 작동한다. 따라서 사용 전에 정렬을 반드시 해야 한다. 정렬하지 않고 사용하면, 중복된 원소가 연속적으로 존재하는 부분에서만 중복이 제거되고 그 외에는 중복된 원소가 남아있을 수 있
선언 #include <map> using namespace std; map<string, int> m; map iterator iterator it; // m의 특정 요소라고 가정 pair<const srting, int> pair = *it; // 키, 값 접근법 auto [key, value] = *it; it->first; // key it->
XOR XOR(exclusive or) 연산은 두 논리값이 같으면 0, 다르면 1을 반환하는 연산이다. bool type 두 변수가 bool type이라면 !=를 통해 쉽게 XOR을 구할 수 있다 나머지 type 두 변수가 bool type이 아니라면 !를 통해 변수를 먼저 bool type으로 변환한 뒤 !=를 사용하면 된다. int a = 5; int
기본 문법 [capture](parameters) -> return-type { body } 캡처 방식 코드설명[]아무것도 캡처하지 않음[=]모든 외부 변수를 값으로 복사[&]모든 외부 변수를 참조로 캡처[x]변수 `x``만 값으로 복사[&x]변수 `x``만 참조로 캡처[x, &y
작은 따옴표(')를 숫자에 컴마 역할을 하도록 사용할 수 있다. 작은 따옴표는 주석과 비슷하다. 코드 실행에 영향을 주지 않는다. 잘못된 위치에 사용해도 상관은 없다. int n = 1'000'000'000; // ok (n = 1,000,000,000) int m = 1'0'0'0'0'0'0; // ok (m = 1,000,000) int a[1'000'
cpp reference 주어진 범위 안에 특정 값부터 시작해서 1씩 증가하는 값을 채우는 함수 // value부터 1씩 증가하는 값으로 채운다. void iota(ForwardIt first, ForwardIt last, T value) { for (; first != last; ++first, ++value) *first = val
stringstream 사용 #include <iostream> #include <vector> #include <string> #include <sstream> using namespace std; vector<string> split(string input, char delim); int main() { string line = "This is
사용법 sort 함수 내부에 시작점과 끝점의 포인터를 입력한다. int arr[n]; vector<int> v; ... sort(arr, arr + n); sort(v.begin(), v.end()); sort는 기본적으로 오름차순으로 정렬한다. 다른 정렬 방법을 사용하고 싶으면 세 번째 인자로 비교 함수를 넣으면 된다. sort(first_iterato