[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 이렇게 강제 형변환을
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'
참고: stackoverflow - Remove elements of a vector inside the loop for loop에서 iterator로 원소 제거 Container c; // deque, vector 등의 container for (auto it = c.begin(); it < c.end(); /* 증가 없음 */) { if ( cond
cpp reference 주어진 범위 안에 특정 값부터 시작해서 1씩 증가하는 값을 채우는 함수 // value부터 1씩 증가하는 값으로 채운다. void iota(ForwardIt first, ForwardIt last, T value) { for (; first != last; ++first, ++value) *first = val
터미널에 gcc --version이나 c++ --version을 입력하여 설치 경로를 파악한다. (내 경우에는 두 경로가 같았음) 경로가 /usr/bin로 끝날텐데 /usr/include로 들어가서 bits라는 디렉토리를 새로 만든다. /usr/include/bits에 stdc++.h 파일을 만들고 아래 코드를 붙여넣는다. #ifndef _GLIBCXX_
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