ex05에서 했던 함수 포인터 배열을 사용하는 것에서 switch문만 추가하면 된다. Harl.cpp #include "Harl.hpp" Harl::Harl() {} Harl::~Harl() {} voidHarl::debug(void) { std::cout
42SEOUL
함수 포인터 배열 함수 포인터 배열은 함수 포인터를 선언할 때 함수 포인터 이름 뒤에 [ ] 대괄호 안에 배열의 크기를 지정하면 된다 반환값자료형 (*함수포인터 이름)[크기](매개변수자료형1, 매개변수자료형2); 선언 예제 int (*functionPointers[])(int, int) 전체 코드 예제 #include // 덧셈 함수 int add(int a, int b) { return a + b; } // 뺄셈 함수 int subtract(int a, int b) { return a - b; } // 곱셈 함수 int multiply(int a, int b) { return a * b; } int main() { // 함수 포인터 배열 선언 및 초기화 int (*functionPointers[])(i..
ex02에서 했던 레퍼런스와 포인터를 어디에서 쓸지 생각을 해보는 문제 #include "HumanA.hpp" #include "HumanB.hpp" int main() { { Weapon club = Weapon("crude spiked club"); HumanA bob("Bob", club); bob.attack(); club.setType("some other type of club"); bob.attack(); } { Weapon club = Weapon("crude spiked club"); HumanB jim("Jim"); jim.setWeapon(club); jim.attack(); club.setType("some other type of club"); jim.attack(); } retu..
main.cpp #include "Zombie.hpp" intmain(void) { Zombie*horde; horde = zombieHorde(5, "zombie"); if (!horde) return (0); for (int i = 0; i < 5; i++) horde[i].announce(); delete [] horde; } Zomebie.cpp #include "Zombie.hpp" Zombie::Zombie() { } Zombie::Zombie(std::string name) : name(name) { } Zombie::~Zombie() { std::cout name
동적 할당을 해보는 문제 변수의 메모리를 new를 통해 동적 할당하는 경우 데이터는 힙 영역에 저장됨 힙에 저장된 데이터는 프로그램이 끝날때까지 유지되기 때문에 더이상 사용하지 않는 경우 반드시 delete로 해제시켜주어야 함 힙에 할당하는 것은 비교적 속도가 느리고, 포인터를 역참조하여 변수의 값에 접근하는 것 역시 직접 접근하는 것보다는 느림 일반적으로 변수를 선언할 경우 정적 할당되어 데이터는 스택 영역에 저장됨 스택 영역에 저장된 데이터는 해당 변수가 지정된 범위(scope)를 벗어날시 자동으로 해제 및 소멸 스택에 할당하는 것은 비교적 속도가 빠르지만, 스택 자체의 크기가 비교적 작으므로 유의해야함 fun_zombie → 함수로 만들어진 좀비 Foo → 클래스 좀비 heap → 동적 할당 좀비 ..
기능 명세서 두 가지 클래스 구현 PhoneBook 연락처 배열 최대 8개의 연락처 저장 가능. 9번째 연락처를 추가하려고 하면 가장 오래된 연락처를 새 연락처로 동적 할당 Contact 전화번호부 연락처를 나타냄. 전화번호부 → PhoneBook 클래스의 인스턴스로 인스턴스화 되어야함. 연락처도 마찬가지, 각각은 Contact 클래스의 인스턴스로 인스턴스화 되어야함. 클래스는 자유롭게 디자인 but 클래스 내에서 사용되는 것 모든 것 비공개 main.cpp #include "PhoneBook.hpp" int main(void) { PhoneBook phoneBook; std::string temp; while (1) { phoneBook.startUp(); std::getline(std::cin, te..
#include int main(int argc, char **argv) { if (argc < 2) std::cout
퀵소트를 어떻게 할지 좀 더 자세하게 살펴보자 크게 2가지로 나뉜다. a_to_b b_to_a 이 함수 2개를 통해서 재귀를 엄청 돌린 뒤에 정렬을 마칠 것이다. 들어가전에 나의 헤더 파일 a스택과 b택을 따로 만들어줌 typedef struct s_node { intcontent; struct s_node*prev; struct s_node*next; }t_node; typedef struct s_stack { intsize; intflag; struct s_node*top; struct s_node*bottom; }t_stack; 예제를 통해 살펴보자 1 3 2 8 7 4 5 9 10 6가 있는데 1 ~ 10으로 간단하게 말한다. 1. 그림 a_to_b a_to_b 코드 이제 a_to_b를 세세하게 ..
PNG Mystic Woods - 16x16 Pixel Art Asset Pack Mystic Woods - 16x16 Pixel Art Asset Pack by Game Endeavor Create the cutest game with this playful asset pack! game-endeavor.itch.io PNG 크기 변환 ResizePixel - 온라인 이미지 편집기 ResizePixel - 온라인 이미지 편집기 온라인 무료 이미지 자르기, 크기 조절, 좌우반전, 회전, 변환, 압축 편집기 www.resizepixel.com 이미지 파일 변환 Convertio — 파일 변환기 Convertio — 파일 변환기 300가지 이상의 포맷 지원 저희는 300가지 이상의 서로 다른 파일 포맷 간의..
깊이 우선 탐색(DFS, Depth-First Search) 루트 노드(혹은 다른 임의의 노드)에서 시작해서 다음 분기(brach)로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방법. 보통 DFS는 특정 도시에서 다른 도시로 갈 수 있는지 없는지, 전자 회로에서 특정 단자와 단자가 서로 연결되어 있는지 등에서 많이 쓰인다. 미로를 탐색할 때 한 방향으로 갈 수 있을 때까지 계속 가다가 더 이상 갈 수 없게 되면 다시 가장 가까운 갈림길로 돌아와서 이곳으로부터 다른 방향으로 다시 탐색을 진행하는 방법과 유사 넓게(wide) 탐색하기 전에 깊게(deep) 탐색하는 것이다. 모든 노드를 방문 하고자 하는 경우에 이 방법을 선택. 단순 검색 속도 자체는 너비 우선 탐색(BFS)에 비해서 느리다. 깊이 우선 탐..