목록Programming/C++ (5)
지우너
요약멤버 초기화 리스트를 사용하는 방식이 더 효율적이고 권장된다.const 멤버 변수나 참조 멤버 변수를 초기화할 때는 반드시 이 방식을 사용해야 한다. 구조체/클래스 이름( 매개변수) : 변수1(매개변수), 변수2(nullptr), 변수3(nullptr) {} 위와 같은 방식으로 작성된다. 방법1. 대입struct Node { int data; Node *prev, *next; Node(int data){ this->data = data; prev = nullptr; next = nullptr; }}; 방법2. 멤버 초기화 리스트struct Node { int data; Node *prev, *next; Node(int data) :..
개념set은 treeset 자료구조로 되어 있다. treeset은 균형잡힌 이진트리 구조로 데이터를 관리해준다.삽입, 삭제, 탐색 등 모든 함수의 시간복잡도가 전부$O(logN)$중복이 허용되지 않음 균형잡힌 이진 트리 (Balanced Binary Tree): 균형잡힌 이진 트리는 각 노드의 왼쪽 서브트리와 오른쪽 서브트리 높이 차이가 최대 1인 이진 트리균형잡힌 트리는 항상 높이 균형을 유지하기 때문에 트리의 깊이가 상대적으로 작다 → 탐색, 삽입, 삭제 등의 연산이 빠르게 수행됨ex) AVL 트리, 레드-블랙 트리 등 언제 쓰는가지금까지 살펴본 숫자들 중 특정 숫자 k보다 같거나 큰 숫자를 빠르게 구하는 경우지금까지 살펴본 숫자들 중 최댓값을 계속 구하는 경우지금까지 살펴본 숫자들 중 최댓값을 계속..
클래스란?두 학생의 국어, 영어, 수학 점수를 저장하기 위해서는int kor1, eng1, math1;int kor2, eng2, math2;이렇게 6개의 변수가 필요하다. 학생이 100명일 경우 변수의 이름 및 갯수(몇 번째 학생의 것인지)가 헷갈려지는 단점도 존재한다. 객체지향언어에서는 이런 정보들을 객체 단위로 표현하는 것을 더 선호하는 것 같다. 위의 경우는 국어, 영어, 수학 점수가 한 학생이 가진 정보이다. 또 다른 경우를 떠올리면 사과라는 객체를 표현하기 위해 색, 무게, 브릭스(=단맛의 정도), 수확 시기 등을 하나의 사과에 담긴 정보로 묶을 수 있다. 이렇게 하나의 객체에 담긴 여러 정보를 관리하기 위한 것이 클래스이다. 클래스 만들기class Student { public: ..
#include 필수!숫자 배열 정렬n개의 숫자 배열이 주어질 때 오름차순(1, 2, 3)/내림차순(3, 2, 1)으로 정렬하는 방법 sort(arr, arr+n);int main() { int n; cin >> n; int* arr= new int[n]; for (int i=0;i> arr[i]; } // 오름차순 정렬 sort(arr, arr+n); // 일반적으로는 평균 시간복잡도가 O(NlgN)인 퀵 정렬이 많이 이용된다. // 다만 최근 Python, Java 등의 언어에서의 sort 함수는 Tim Sort로 이루어져 있다고 한다 sort(arr, arr+n); for (int i=0;i()); sort(arr, arr+n, great..
vector.size()나 string.length()는 자주 써서 괜찮은데, 배열 길이는 정해져 있어서 숫자로 적고 말면 되니까 잘 안 쓰게 됐다...무의식 중에 arr.size(), arr.length() 적었다가 에러가 날 때가 많아서 깔끔하게 적고 싶을 때 쓰려고 정리한다!요약// arrSizeint arr[6] = {1, 2, 3, 4, 5, 6};int arrSize = sizeof(arr)/sizeof(int); //sizeof(array_name)/sizeof(type)for(int i=0; i vec(6);int vecSize = vec.size();for(int i=0; i 설명string이나 vector는 클래스라서 클래스의 멤버변수로 size, length가 제공되지만, arr는 c..