개인공부/C++(44)
-
class (1)
class 선언방법 struct 구조와 유사하다. 접근 제한 지정자 private : 사적이다라는 개념으로 class 내부에서 접근이 가능하다. protect : 상속 개념을 배우고 다시 한번 정리예정이다. public : 누구에게나 공개되어서 어디서나 접근이 가능하다. m_i 는 private 이기때문에 class 외부에서 호출할 수 없다. SetInt 는 public 이므로 class 외부에서 호출할 수 있다. 위와같이 public 함수를 통해서 class 내부의 private m_i값을 수정할 수 있다. 생성자, 소멸자 객체 생성, 소멸 시 자동으로 호출 직접 만들지 않으면 기본 생성자, 기본 소멸자가 만들어짐 생성자 선언, 소멸자 선언 생성자를 선언할때는 class 의 이름을 그대로 선언해주면 된..
2022.12.06 -
노드
노드 가변배열 강의를 듣고 다음으로는 노드 구조를 구현하였다. 리스트.h 헤더파일에 노드와 리스트 구조체를 설계하였다. 메모리 공간을 만들어줄 릴리즈 함수와 메모리 공간을 해제할 exit 함수는 리스트의 시작주소만 알면 되기 때문에 list* 값만 받았다. 이 노드의 구조는 list 구조체의 count 를 통해서 길이를 확인 가능하고 이후에 노드들은 다음 노드들의 주소와 저장 int값을 가지고 있다. 이를 통해서 첫번째 시작주소만 알고 있으면 마지막 노드까지 찾아갈 수 있다. 다음으로는 릴리즈 함수를 구현하였다 시작은 아무런 값을 가지지 않기 때문에 firstNode 에 nullptr을 가지고 count도 0이다. 다음으로 새로운 값을 가지는 노드를 만들고 현재 마지막 위치에있는 노드의 NextNode값..
2022.12.06 -
병합 , 퀵 정렬
병합 정렬 병합 정렬을 c++로 구현해보았다. 처음에 어떤알고리즘인지만 보고 구현하는 과정에서 새로운 배열을 생성하고 배열의 값이 null인 것도 계산하는 코드로 작성해서 코드가 너무 길고 가독성이 떨어지고 코드를 완성할 수 없을거 같아서 다른 블로그의 c++로 병합정렬을 구현한 것을 공부하고 이해한후에 코드를 작성하였다 다른코드를 확인하니 재귀함수를 이용하였는데 정말로 생각지도 못한 방법이였다. 내가 재귀 함수를 정확하게 사용해본적이 없었는데 병합정렬코드로 재귀함수에 대해서 공부할 수 있었다. 그후에는 내가 만든 가변배열에서 활용할 수 있도록 가변배열의 크기와 같은 배열을 만들고 둘의 주소를 보내고 가장 왼쪽과 오른쪽 지점을 보내서 병합배열을 구현하였다. 퀵 절렬 이후에는 퀵정렬도 만들어보았는데 코드 ..
2022.12.04 -
정렬 알고리즘
정렬 알고리즘 c++ 강의에서 배운 가변정렬값을 버블정렬 함수를 구현해서 정렬하는것이 과제였다. 먼저 배열에 랜덤한 값들을 대입해서 정렬되지 않은 배열을 생성하였다. 사용법으로는 먼저 srand(time(NULL)) 을 이용하여 초기화 시켜준다 이 과정이 없으면 항상 같은 배열 값을 가진다. 그후에는 rand() 을 이용하면 0~19까지 값을 랜덤하게 정해주고 1을 더해주어 범위는 1~20으로 설정하였다. 버블 정렬 버블 정렬은 기본적으로 배열의 두 수를 선택한 뒤, 만약 그 두 수가 정렬되었다면 놔두고 아니라면 두 수를 바꾸는 방식으로 진행된다. 오름차순으로 정렬할 때는 , 내림차순이라면 여야 정렬된 것으로 판단한다. 이를 배열의 처음부터 끝까지 반복한다. 위 알고리즘을 배열에 아무 변화가 없을 때까지..
2022.12.03 -
구조체, 동적할당
구조체에 값을 대입하고 싶을때는 만약 포인터 구조체를 통해서 구조체의 주소가 s이면 로 정의가 가능하다. 동적할당 특징 1. 런타임 중에 대응가능 2. 사용자가 직접 관리해야함(해제) malloc (숫자); 는 숫자만큼의 공간을 가지는 힙메모리는 동적할당해준다 말록의 특징으로는 void 타입이기때문에 자신이 원하는 자료형 타입으로 바꾸어서 사용한다. 그러므로 malloc은 void 포인터의 특징을 가지고 있다. 이러한 함수를 이용하여 힙메모리를 관리가능하고 다른언어가 없는 특징을 가진다. 가변배열 가변하는 배열이기때문에 힙메 모리 영역을 이용한다. int arr[변수] ={}; 는 불가능하다 왜냐하면 처음에 프로그램이 실행되고 메인함수의 스택메모리 크기를 할당해야하는데 배열의 크기에 변수가있으면 메모리값..
2022.12.03 -
함수 오버로딩
함수 오버로딩 같은 이름의 함수여도 자료형에 따라서 함수를 다르게 설정할 수 있다. 그러므로 같은 이름의 함수를 정의할 수 있다. #include assert(nullptr); 이런 조건이 발생하면 안된다고 경고해주는 기능으로 디버그 상태를 출력해준다
2022.12.03