스택스택은 데이터를 쌓는다. 그리고 가장 나중에 들어온 데이터를 먼저 처리한다. 당장 눈에 들어온 일부터 먼저 처리하는 느낌이다. 미로를 탐험하다보면 보고 있는 위치가 어떤 장소이냐에 따라 스택에 넣을 지 말지, 탐색을 할 지를 결정할 수 있다. 위치struct Pos { int row; int col; // 디버깅을 위한 편의 기능 friend ostream &operator 스택으로 미로찾기void StackMaze() { Stack s; Pos start = {1, 1}; // i = 1, j = 1 시작 지점 s.Push(start); while (!s.IsEmpty()) { Pos p = s.Top(); s.Pop(); ..
자료구조를 사용하는 이유데이터는 구조화 된 여부에 따라 정형, 비정형으로 구분한다. 컴퓨터 시스템에서 데이터를 효율적으로 다루기 위해서는 데이터가 구조화되어야한다. 데이터를 효율적으로 저장하고 관리하기 위해 구조화 된 형태를 자료구조라고 한다. 배열, 스택, 큐 모두 자료구조이다. 자료구조마다 각기 다른 방식으로 데이터를 관리하고 처리한다. 스택개념스택은 후입선출원칙(LIFO)에 따라 데이터를 관리한다. 데이터를 넣는 순서와 반대로 데이터가 꺼내진다. 즉, 가장 마지막에 넣은 데이터가 가장 먼저 나오게 된다.스택에서 가장 마지막에 들어간 데이터의 위치를 top이라고 한다.스택은 push, pop, peek 연산이 있다. push 연산은 데이터를 넣는다. pop은 top에 있는 데이터를 제거한다. peek..
개념코드의 재사용성을 높이고 자료형에 독립적인 프로그래밍을 가능하게 하는 기능자료형을 추상화하여 클래스와 함수를 선언할 수 있다.template, typename 키워드를 사용한다.문법클래스 선언 위에 템플릿 예약어를 `template `처럼 사용한다.클래스의 인스턴스 생성 시 `` 안에 사용하고자 하는 자료형을 넣는다. 사례템플릿을 활용한 클래스 선언#include using namespace std;template class Calculator { public: Calculator() { result_ = 0; cout 템플릿이 활용된 클래스의 인스턴스 생성int main() { Calculator a; a.add(10, 12); a.print(); ..
구조체란?여러 개의 변수와 함수를 하나의 단위로 묶은 것구조체란 데이터의 집합을 정의하는 사용자 정의 자료형이다. 여러개의 변수를 하나의 단위로 묶어서 다루게한다. 각각의 변수와 함수를 구조체의 멤버라고 한다. 클래스와 달리 구조체의 멤버는 public 접근제어를 기본으로 가진다.struct MyStruct { int first; int second; int Sum() { return first + second; }};구조체를 선언 시 마지막에 세미콜론을 붙이는 것을 기억하자. 멤버구조체의 멤버란 구조체 내에 정의 된 변수나 함수다. 구조체는 멤버를 여러 개 가질 수 있다. 구조체 멤버 변수는 구조체의 인스턴스가 다룰 값을 저장한다. 구조체 멤버함수는 구조체의 데이터를 처리하거나 특정 작업을 실행한..
정적할당 vs 동적할당정적할당정적할당이란 프로그램에서 미리 메모리를 할당받는 방식이다. 컴파일 타임에 메모리의 크기와 위치가 결정된다.#include int main() { // 정적 할당: 배열의 크기가 고정되어 있음 int arr[5] = {1, 2, 3, 4, 5}; // 배열 요소 출력 for(int i = 0; i 동적할당동적할당이란 사용자의 지정에 따라 메모리를 할당받는 방식이다. 런타임에 메모리의 크기와 위치가 결정되며 필요에 따라 메모리를 할당받는 것이기 때문에 별도로 메모리 해제도 해야한다.#include int main() { // 동적 할당: 배열의 크기를 런타임에 결정 int n; std::cout > n; // 동적으로 메모리 할당 ..