스택 (Stack)스택이란자료의 입출력이 후입선출(Last-in First-Out)인 형태로 구성된 자료구조가장 늦게 들어온 자료가 가장 먼저 나가게 되는 형태 이를 C로 구현해 보면 #include using namespace std;#define MAX_STACK_SIZE 100typedef int element;element stack[MAX_STACK_SIZE];int top = -1;int is_empty() { return (top == -1);}int is_full() { return (top == MAX_STACK_SIZE - 1);}void push(element item) { if (is_full()) { cerr 베이스는 C++이지만 기본문법만 다를뿐 C로 바꾸면 가동합니다. 스택에..
구조체를 동적할당하여 값을 직접접근하여 넣고 출력하기#include #include #include using namespace std;typedef struct studentTag { char name[10]; //char 1바이트 * 10 = 10바이트 int age; //4바이트 double gpa; //8바이트} student;int main(){ student* s; s = (student*)malloc(sizeof(student)); //student 구조체속 속성들의 크기합만큼 동적할당(10+4+8)=22바이트 할당 /*24로 나오는 이유는 메모리의 정렬위함. * * 구조체 속 name이 10바이트, age가4바이트, gpa가 8바이트인데 ..
희소행렬간의 덧셈과 전치#include #include using namespace std;#define MAX_TERMS 100typedef struct { int row; int col; int value;} element;typedef struct Matrix{ vector data; int rows; int cols; int terms; // 생성자에서 data를 MAX_TERMS로 초기화 Matrix() : data(MAX_TERMS), rows(0), cols(0), terms(0) {}} matrix;Matrix matrix_transpose2(Matrix &a) { matrix b; //b 행렬을 a의 전치행렬 형태로 //0이..
C++ 로 만들어본 다항식 덧셈#include #include using namespace std;#define MAX(a, b) (((a) > (b)) ? (a) : (b))#define MAX_Degree 101 //최대 항 개수// 다항식의 항typedef struct Term { int degree; // 계수 int exponent; // 지수} term;// 다항식 구조체typedef struct Polynomial { int numTerm; // 항의 개수 term term[MAX_Degree]; // 각 항을 저장할 배열} poly;// 다항식 출력 함수void printPoly(poly* p) { for (int i = 0; i numTerm;..
목차 템플릿과 제네릭 프로그래밍 설명 코드 및 설명(with Chat GPT4) 1. 템플릿(Template)이란? 템플릿은 코드의 재사용성을 높이기 위해 설계된 기능으로 템플릿을 사용하면, 데이터 타입에 의존하지 않는 범용적인 클래스나 함수를 작성할 수 있습니다. 템플릿 종류 함수 템플릿(Function Templates) 동일한 로직을 다른 데이터 타입에 대해 수행하는 함수를 만들 때 사용하는 템플릿으로, 함수를 정의할 때 특정 타입을 지정하지 않고, 템플릿 매개변수를 사용하여 타입을 나중에 정하는 방식인 템플릿입니다. 클래스 템플릿(Class Temlates) 데이터 타입에 독립적인 클래스를 정의할 때 사용합니다. 이를 통해 다양한 타입에 대해 동작하는 범용적인 클래스를 만들 수 있습니다. 제네릭 ..
상속이란? 기존 정의되어 있는 객체의 속성과 메소드를 물려받아 새로운 클래스로 재정의하는 것 입니다. 현실에서 상속은 말그대로 부모로부터 자식이 물려받는 것을 말합니다. 이는 객체지향에서도 적용되며, 부모클래스의 속성과 메소드를 자식클래스가 물려받을 수 있습니다. 다형성이란? 상속받은 메소드를 재구현하여 같은 이름의 함수를 다양하게 호출할 수 있는 것 입니다. 부모 클래스의 메소드를 자식클래스에서 이름은 바꾸지않고 내용만 바꾸어 호출시키며 사용할 수 있습니다. 상속은 클래스 선언시에 " : (접근지정자) 부모클래스이름" 방식으로 작성해주면 됩니다. 사람클래스와 학생클래스를 상속으로 부모 자식관계로 만들어 main함수에서 호출시켜보겠습니다. person클래스 #pragma once #include usin..
목차 생성자와 소멸자란 생성자 정의와 소멸자 정의 with 코드 "생성자"란 객체를 생성할때 객체의 속성값들을 초기화 시켜주는 함수 입니다. 풀어서 얘기해보면 객체를 생성할때에 하나의 메소드를 통해 객체를 초기화 시켜 한번에 생성하기 위함입니다. 생성자는 정의해주지 않으면 컴파일러가 자동으로 디폴트 매개변수를 가진 생성자를 자동으로 정의해줍니다. "소멸자"란 객체가 소멸될 때 자동으로 발생하는 발생하는 메소드 입니다. -객체의 수명이 끝나면 실행되는 메소드로서 쓰지 않을 객체를 정리해줍니다. -객체의 동적할당을 해제하기 위해 사용합니다. (메모리 누수를 막기 위함) 소멸자는 생성자와 메소드 정의는 비슷하며 ~를 붙여서 정의합니다. 생성자와 소멸자의 정의 #include #include using name..
목차 접근지정자란? 접근 지정자 종류들 접근지정자 사용해보기 with 코드 1. 접근 지정자란? 객체지향에는 캡슐화라는 단어가 존재합니다. 속성과 메소드들을 묶어서 캡슐에 가둔다는 것인데, 이때 이 캡슐을 얼마나 보여줄지를 나타내는 것이 접근지정자입니다. 객체지향은 캡슐화가 굉장히 중요한 요소입니다. 2. 접근 지정자 종류들 public : 모든 접근을 허용한다. private : 자기 클래스 내부의 메서드에서만 접근 허용 protected : 자기 클래스 내부 또는 상속받은 자식 클래스에서 접근 허용 public은 말그대로 클래스내의 속성과 메소드를 외부에서의 접근을 허용하겠다는 지정자입니다. private는 자기 클래스내에서 메소드로의 접근만을 허용하겠다는 지정자입니다. protectied: 자기 클..
목차 프로그래밍 언어에서 객체란 객체 선언과 사용과정 with 코드 1. 객체란? 프로그래밍 언어에서 객체 또는 오브젝트는 클래스에서 정의한 것을 토대로 메모리(실제 저장공간)에 할당된 것으로 프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간을 의미합니다. 그 메모리에는 여러 변수, 자료구조, 함수 등이 들어 갈 수 있으며, 객체는 선언 전까지(메모리 할당전까지) 존재하지 않습니다. 라고 위키백과에서 말해주고 있습니다. 저는 이런 설명보다는 처음 프로그래밍을 배우는 시점에서의 설명을 원하시는 분들을 위해 풀어서 설명해보겠습니다. 지금까지 작성한 코드들은 그저 변수와 함수로 코드로 티키타카하며 써왔습니다. 하지만 이제는 현실과 비슷한 시점으로 프로그래밍을 하게 됩니다. 객체: 말그대로 작용의 ..