Archived(CSE Programming) (169) 썸네일형 리스트형 Chap 5. 복사 생성자(Copy Constructor) Chap 5. 복사 생성자(Copy Constructor) 5-1. 복사 생성자와의 첫 만남 우리는 기존의 c 스타일에서 초기화를 할 때,int num = 20; int & ref = num; 을 사용했다면 c++ 에서는 다음과 같은 초기화가 가능하다.int num(20); int & ref(num); 즉, 마찬가지로 대입연산에서도 이러한 의미를 지니게 되는 것이다. 12Object obj1(40);Object obj2 = obj1; // Object obj2(obj1)cs 이러한 초기화의 의미는 결국 생성자로 객체를 인자로 받았을 때 어떻게 처리할 지를 우리 c++ 프로그래머가 지정할 수 있는 것이다. 1234567891011121314151617Class Ex{private: int num1; int.. Chap 4. 클래스의 완성 Chap 4. 클래스의 완성 4-1. 정보은닉(Information Hiding) 객체 지향 프로그래밍에 있어서, 중요한 것을 클래스 설계인데, 이 클래스 설계에서 가장 중요한 두 가지는 정보은닉과 캡슐화이다.그 중에서 먼저, 정보은닉에 대해서 이야기하자면 정보은닉은 쉽게 말해서 클래스의 멤버변수 정보를 감추는 것인데, 타 클래스에서 접근하지 못하도록 설계하는 것이다. private으로 멤버변수를 설정하고 이를 접근할 수 있도록 public 함수들(get,set) 등을 설정해주는 방법을 통해 안전한 방법으로 멤버변수에 접근할 수 있도록 해주는 것이다. 추가적으로 멤버 함수에 const 선언을 해주면 해당 멤버변수 값을 변경하지 않도록 하여, 안정성을 높이는 효과를 가져온다.int getX(void) co.. Chap 3. 클래스의 기본 Chap 3. 클래스의 기본 3-1. c++ 에서의 구조체 기존의 c언어에서는 관련이 있는 data들을 하나의 struct 구조체 변수로써 선언하여 사용할 수 있었다.하나의 묶음 데이터(구조체)로 표현함으로써 관리면에서나 활용면에서 다양한 이점이 있을 수 있었다. 그런데, 추가적으로 이러한 변수와 함께 이 변수들이 활용하는 기능을 기존의 전역변수에서 특정 구조체 내부의 함수로 포함시켜 사용한다면 더욱 효율적으로 활용할 수 있을 것이다. c++에서는 이러한 이점을 고려하여 DATA + FUNCTION을 합쳐서 새로운 구조체, 즉, CLASS라는 객체 개념을 가져와서 활용한다.이러한 클래스를 정의하고 클래스 변수를 선언하게 된다면 이 변수 내부에는 data들과 함께 함수들도 독립적으로 구성되어 있다고 봐도 .. Chap 2. C언어 기반의 C++ 2 Chap 2. C언어 기반의 C++ 2 2-1. 시작에 앞서 const 상수의 의미const int * ptr1 = &value; // 포인터 ptr1을 이용해서 value 값을 변경할 수 없습니다.int * const ptr1 = &value; // 포인터 ptr1 자체가 상수화 되었습니다. 2-2. 새로운 자료형 bool 기존의 true/false를 0이 아닌 것/ 0 으로 구분하던 것을 새롭게 표현한다.bool 자료형으로 true와 false를 할당할 수 있다. 2-3. 참조자(reference)의 이해 참조자란 기존의 할당되어 있는 변수 공간을 가르킬 수 있는 새로운 형태를 말하는 것이다.따라서 기존의 할당되어 있는 공간으로만 초기화 할 수 있으며, 초기화가 이루어진 후에는 변수처럼 사용이 가능하.. Chap 1. C언어 기반의 C++ Chap 1. C언어 기반의 C++ 1-1. printf와 scanf를 대신하는 입출력 방식 std::cout 우선순위 큐_대칭 최소최대 힙(Symmetric min max heap) 우선순위 큐_대칭 최소최대 힙(Symmetric min max heap) Symmetric min max heap 은 root가 비어있고 루트 lch에는 가장 작은 값이 루트 rch에는 가장 큰 값이 있어서우선순위의 최소 최대를 편하게 접근할 수 있는 완전 이진 트리(CBT)이다. 조건은 크게 3가지이다.1. 각 노드의 원소는 오른쪽 형제보다 작거나 같다.2. 조부모를 가진 노드 N -> 조부모의 rch > N3. 조부모를 가진 노드 N -> 조부모의 lch < N 이러한 조건을 만족시키는 대칭 최소최대 힙을 삽입하는 과정은 다음과 같다. * 먼저 해당 위치에 E라는 임의 노드를 삽입.그리고 조건 1을 체크를 한다(왼쪽 형제로 가서 값 비교, 오른쪽 형제로 가서 값 비교) * 그리고 부모의 손자노드들로 .. 우선순위 큐_피보나치 힙(Fibonacci Heap) 피보나치 하면 수열이 가장 먼저 떠오르는데 이 수열의 개념이 힙이 결합하는 과정과 유사하여피보나치 힙이라고 불린다. 피보나치 힙은 각 힙들을 doubly circular linked list 형태로 구성되는데피보나치 힙은 삽입의 과정을 거치면 이항 힙과 유사한 형태로 계속 같은 level의 min으로 추가 한다.추가하면서 계속 min을 체크함. * node * fb[MAX]의 노드포인터 배열을 선언하고그리고 최소 값을 반환하는 순간 모양이 재조정되는데, 최소값을 가진 heap의 루트가 반환되고, 해당 heap의자식노드들을 포인터로 기존 min level과 연결한다. * 그리고 가장 최근에 삽입한 heap의 내부노드 수를 판단하여해당 내부노드 수 값의 index에 해당 heap을 삽입한다. * 그리고 다음.. 자료구조 프로그래밍 Lab09) Patricia 만들기 자료구조 프로그래밍 Lab09) Patricia 만들기 문제 해결 구현 알고리즘은 탐색 / 삽입 두가지로 나뉜다 탐색.0) t tree가 NULL 이면 탐색 실패1) tree의 nextNode에 lch를 가져오고 current node에 현재 트리 t를 가져온다2) bitNumber가 더 클 동안 계속 이동한다(bitNumber가 0이면 왼쪽, 값이 있으면 오른쪽 으로 이동)3) nextnode를 반환 삽입.0) t tree가 NULL이면 해당 노드에 값을 할당 후 종료1) tree를 search 해서 값이 똑같으면 삽입 실패(이미 존재하는 값)2) tree를 탐색하는 알고리즘을 통해서 탐색을 한 다음3) 새로운 노드를 할당한 후에, 현재 노드가 부모 노드의 lch라면 부모노드의 lch에 새노드 할당, .. 이전 1 ··· 17 18 19 20 21 22 다음