프로그래밍 문법/c++ 18

c++ 자료구조

array- 고정된 크기를 가진 자료구조- 시간복잡도  탐색 : O(1)  삽입/삭제 : O(n)array arr = {1,2,3,4,5}; set - 정의 및 시간복잡도1. setset my_set = {1,2,3,4,5};- 중복을 허용하지 않는 자료구조- red-black tree구조로 되어있어 정렬이 되어있다.- 시간복잡도  탐색 : O(logN)  삽입/삭제 : O(logN) 2. hash set(unordered_set)unordered_set my_unordered_set = {1,2,3,4,5};- 중복을 허용하지 않고 해쉬를 이용하기 때문에 정렬이 되어있지 않지만 탐색, 삽입, 삭제가 O(1)인 자료구조- 시간복잡도 탐색 : O(1) 삽입/삭제 : O(1) 3. multisetmultis..

함수에서 배열호출시 메모리참조, 벡터호출시 값참조

c++에선 함수에서 호출시 1. 배열은 메모리참조 2. 벡터는 값참조를 한다 ​ 1. 소스코드 #include #include #include #include #include #define max pow(2,31)-1 using namespace std; void vectorFuc(vector v) { for (int i = 0; i < 10; i++) { v[i] = i; } return; } void arrFuc(int *a) { for (int i = 0; i < 10; i++) { a[i] = i; } return; } int main() { vector v(10); int arr[10] = { 0, }; vectorFuc(v); //call by value arrFuc(arr); //call b..

문자열형 숫자를 숫자형으로 표현

char형으로 된 숫자를 숫자형으로 바꾸고 싶을때는 다음과 같이 쓸 수 있다. string N; int temp = (N[i] - '0'); 예시문제) [boj]10610_30 #include #include #include using namespace std; int main() { string N; cin >> N; bool isInZero=false; int sum=0; //3의 배수 and 10의배수 ? for (int i = 0; i 숫자 sum += temp; if (!temp) { isInZero = true; } } if (sum % 3 != 0 or not isInZero) { cout

벡터에서 값으로 index찾기

방법 1. 찾고자 하는 값의 위치에 반복자를 만들어준다. 2. 백터의 첫번째 위치의 반복자( vec.begin() )와 위에서 만든 반복자 사이의 거리( distance() )를 이용하여 index를 구한다 예시 코드 - 4의 index를 찾고싶을때 #include #include #include using namespace std; int main() { vector vec = { 1,2,3,4,5,6,7 }; //찾고자하는 값의 반복자를 정의한다 vector::iterator iter = find(vec.begin(), vec.end(), 4); //첫인덱스부터 위에서 찾은반복자 사이의거리를 이용하여 index를 찾는다 int index = distance(vec.begin(), iter); cout

c++ 자료형

1. 큐 함수 기능 q.front() 가장 먼저 들어간 원소 리턴 q.back() 가장 마지막에 들어간 원소 리턴 q.push(value) 값을 추가 q.empty() 비어있으면 1 q.size() 내부 값의 개수 리턴 q.pop() front값 삭제 2. 스택 #include stack mystack; stack mystack2; //스택안에 벡터 mystack.pop() // 스택의 끝 값 삭제 mystack.push(5) // 스택 삽입 a=mystack.top() // 스택의 끝 값 return 함수 기능 s.top() 가장 마지막에 들어간 원소 리턴 s.push(value) 값을 추가 s.empty() 비어있으면 1 s.size() 내부 값의 개수 리턴 s.pop() top값 삭제 3. dequ..

사용자 정의 정렬(sort)

0. 기본구조 기본적인 구조는 아래와 같다. comp에는 정렬하고싶은 형태를 반환하는 함수를 넣는다. sort(vec.begin(), vec.end(), comp); ​ 1. 함수의 input compare함수는 정렬하고자 하는 배열의 요소에 맞는 type을 input으로 갖어야 한다. 예를들어 2차원벡터(벡터를 요소로 갖는경우)의 경우 함수 comp의 파라미터를 벡터로 받아야 하고, 문자열을 요소로 같는 경우는 함수 comp의 파라미터를 문자열로 받아야 한다. ​ 2. return값 return이 true가 나오면 바꾸지 않고, false가 나오면 바꾼다. ​ 3. 소스코드 bool cmp(vector v1, vector v2) { // v2가 크면 가만히 놔둬(true) if (v1[2] < v2[2..

printf 서식문자(%)

[표 1] printf()함수의 서식 문자 구분 서식 문자 출력 형태 정수형 %d 10진수 정수 %x 16진수 정수 %c 문자 실수형 %f 10진수 실수 (float형) %e 10진수 실수 (지수형 표기) %lf 10진수 실수 (double형) 문자열 %s 문자열 출력 [표 2] printf()함수의 특수 제어 문자 문자 기능 \n 줄바꿈 \t 수평 탭(tab) \a ‘삑’하는 beep음을 발생한다. \\ 역슬래시 문자(\) 자체를 표시 \“ 따옴표 문자를 표시 출처: https://studymake.tistory.com/188 [스터디메이크]

벡터에 요소있는지 확인

* vector에서 value가 있는 반복자를 리턴하는 함수(만약 value가 없다면 vector.end()까지 수행) #include vector::iterator iter; iter=find(vector.begin(),vector.end(),value); //만약 value 없다면 런타임에러 따라서 다음과 같은 식으로 value가 존재할 때 1, 없을때 0을 반환하게 할 수 있다. find(vector.begin(),vector.end(),value) != vector.end() 이는 파이썬에서 더보기 value in L 와 같다 ​