heap, stack메모리 공간에는 힙 영역과 스택 영역이 있다.스택 영역은 함수가 호출될때 생성되는 지역 변수와 매개 변수가 저장되는 공간이다. 정적 데이터가 할당되고 해제된다. L나중에 할당된 데이터가 먼저 해제되는 LIFO(Last in First Out) 후입선출 방식으로 동작한다. 힙 영역은 프로그램이 동작하면서 동적으로 할당되고 해제되는 공간이다. new, delete등의 방법으로 동적으로 메모리를 할당, 해제할 수 있다. 먼저 할당된 메모리가 먼저 해제되는 FIFO(First in First Out)선입선출로 동작한다. 스마트 포인터가 생기게된 이유RALL(Resource acquisition is initialization): 자원의 획득은 초기화다.=> 자원을 할당한 객체를 통해 지움..
#include#include#includeusing namespace std;int main() { int count; int c = 10; cin >> count; int sum = 0; for (int i = 0; i > b; sum += b; } vector d; while (sum != 0) { d.push_back(sum % 10); sum /= 10; } for (int i = d.size() - 2; i >= 0; i--) { cout #includeusing namespace std;int main() { int* a = new int[100]; int c; int count; int result = 99; cin >> count; for (int i = 0; i > b; a[..
리스트-리스트에는 항목들이 차례대로 저장되어 있음-리스트의 항목들은 순서 또는 위치를 가짐-스택, 큐도 넓게 보면 리스트의 일종 연결리스트-자료를 저장하고 있는 노드와 다음 자료의 위치를 가리키는 포인터로 구성-동적으로 크기가 변함-삭제, 삽입 시 데이터 이동할 필요가 없음-삽입 과정 배열과 연결리스트의 차이배열연결 리스트인덱스로 자료에 접근하므로 탐색시간이 빠름특정 노드에 접근하기 위해 이전 노드들을 탐색해야 하므로 탐색시간이 오래 걸림 0(n)임의의 원소를 삽입하거나 삭제할 때 많은 양의 원소를 이동시켜야 함노드의 이동이 불필요하여 삽입, 삭제가 용이함 O(1)자료의 크기가 배열의 크기에 제약을 받음자료의 삽입/삭제가 동적 할당에 의해 이루어져서 기억장소의 낭비를 최소화 할 수 있음메모리 상 배체가 ..
큐선입 선출(FIFO, First-in First-out)=>가장 먼저 삽입되는 개체가 가장 먼저 삭제되는 구조(편의점에서 물건 채울때와 같은 원리)front-큐에서 삭제가 일어나는 곳rear-큐에서 삽입이 일어나는 곳 큐의 연산-삽입1.비어 있는 큐의 초기 상태에는 Front와 Rear 값 모두 -1로 설정2.자료가 삽입될 때마다 Rear가 1씩 증가하며 이동3.새로운 자료를 삽입하기 위해서는 Rear포인터를 증가시키고, 그 위치에 자료 입력 -삭제1.Front포인터가 1씩 증가하며 자료를 삭제2.마지막으로 입력된 자료가 삭제되면 Front와 Rear의 포인터의 값이 같아짐 원형 큐-Rear나 Front가 배열의 끝에 도달하면 회전하도록 하여 메모리 공간을 좀 더 효율적으로 사용 가능-Front와 Re..
알고리즘의 성능분석1. 실행 시간을 측정하는 방법 -두 개의 알고리즘의 실제 실행 시간을 측정하는 것 -실제로 구현하는 것이 필요 -동일한 하드웨어를 사용하여야 함(clock함수 사용: 호출 되었을 때의 시스템 시각 반환) 2.알고리즘의 복잡도를 분석하는 방법-직접 실행하지 않고서도 수행 시간을 분석하는 것 -알고리즘이 수행하는 연산의 횟수를 측정하여 비교 -동일한 기능을 수행할 때, 일반적으로 복잡도가 낮을수록 좋은 알고리즘-공간 복잡도 분석 : 수행 시 필요로 하는 메모리 공간 분석 -시간 복잡도 분석 : 수행 시간 분석 -수행 시간 : 최악의 경우의 입력에 대한 기본 연산(산술, 대입, 비교, 이동) 의 횟수 n을 n번 더하는 문제 빅오 표기법-차수가 가장 큰 항이 가장 영향을 크게 미치고 다른 항..
클래스-객체를 찍어내는 틀(붕어빵) 접근 지정자-private: 클래스 안에서만 사용 가능-protected: 클래스 안과 상속된 클래스에서 사용 가능-public: 어디서나 사용 가능 생성자-오직 한 번만 실행됨-생성자 함수의 이름은 클래스 이름과 동일해야 됨-리턴 타입을 선언 하지 않음-매개변수를 다르게 하여 중복 가능class A{public:int b;A() { //기본b = 0;}A(int c) { //오버로딩b = c;}};+생성자 호출을 할때 초기화 리스트에 넣어서 하는 것이 비용적으로 효율적이다.class A{public:int b;A(int c){ //기본b = c;}A(int number): c{number}[] //초기화 리스트}; 소멸자-객체가 사라질 때 필요한 마무리 작업이 목적..