[내일배움캠프 Day15] 디자인 패턴 - 구조 패턴
·
내일배움캠프/TIL
이어서  '포르잔 C++ 바이블' 책에 있는 디자인 패턴 내용 중 구조 패턴에 대해 정리하였습니다.  1. 구조 패턴의 개요적절한 자료형이 없는 상태에서 문제를 해결해야 하는 경우, 이미 존재하는 인터페이스와 구현을 결합해서 새로운 자료형을 만들어 문제를 해결합니다. 구조 패턴은 이런 경우 사용하는 방법으로 상속과 구성을 결합해 사용하는 방법을 정리한 것입니다. 2. 브리지 패턴브리지 패턴은 새로운 인터페이스를 만들 때, 이전 구현을 변경하지 않고 간단하게 구현할 수 있게 해줍니다. 새로운 인터페이스가 기존의 인터페이스를 구성으로 포함하고, 새로운 인터페이스 내부의 함수에서 기존의 인터페이스가 갖는 함수를 호출하는 것입니다. 3. 어댑터 패턴기존의 어떤 클래스를 사용해야 하는데 인터페이스가 우리가 원하는..
[내일배움캠프 Day14] 디자인 패턴 - 생성 패턴
·
내일배움캠프/TIL
내일배움캠프 3-1 강의에서 디자인 패턴 내용을 간단하게 배워 '포르잔 C++ 바이블' 책에 있는 디자인 패턴 내용 중 생성 패턴에 대해 정리하였습니다.   생성 패턴(creational pattern) : 전통적인 방법으로 인스턴스화하면 안 되는 상황에서, 어떤 형태로 객체를 인스턴스화해야 하는지에 대한 방법 1. 생성 패턴 구조객체 지향 프로그래밍은 원래 위 그림처럼 객체의 설계와 생성을 분리하는 것이 목적입니다. 그런데 클래스를 설계자가 설계한대로 사용자가 사용하지 않는 경우가 많이 발생했습니다. 그래서 객체의 생성과 관련된 모든 책임을 클래스의 사용자에게 맡기는 것이 좋지 않다는 의견이 나왔습니다.설계자와 사용자 사이에서 발생할 수 있는 이러한 객체의 생성과 관련된 문제를 해결할 수 있도록 여러 ..
[내일배움캠프 Day13] C++ 2주차 과제 진행
·
내일배움캠프/TIL
[3번 과제] 템플릿 및 STLSimpleVector.h#pragma once#include #include template class SimpleVector {private: T* data; int currentSize; int currentCapacity;public: // 기본 생성자 SimpleVector() : currentSize(0), currentCapacity(10) { data = new T[currentCapacity]; } // 용량 지정 생성자 SimpleVector(int capacity) : currentSize(0), currentCapacity(capacity) { data = new T[currentCapacity]; } // 복사 생성자 SimpleVector(con..
[내일배움캠프 Day12] 반복자와 포인터
·
내일배움캠프/TIL
반복자에 대해 ' 포르잔 C++ 바이블' 책을 통해 기본적인 내용을 정리했습니다.https://dev0404.tistory.com/31 [C++] 반복자(iterator)1. 반복자 구조반복자(iterator)는 포인터를 추상화한 것입니다. 포인터는 C++이 제공하는 문법이므로 추가적인 제한을 걸거나 기능을 추가할 수 없지만 반복자라는 객체로 포인터를 추상화하면,dev0404.tistory.com추가로 ' 266가지 문제로 정복하는 코딩 인터뷰 in C++' 책의 반복자에 대한 내용을 정리하겠습니다. 예시는 제가 짠 코드로 틀린 내용이 있을 수도 있습니다.  반복자와 포인터의 유사점과 차이점을 설명하라해법 : 둘 다 값을 얻기 위해 역참조할 수 있다는 점에서 비슷하다. 차이점은 다음과 같다1. 포인터는 ..
[내일배움캠프 Day11] 템플릿
·
내일배움캠프/TIL
일반화는 여러 상황에 적용할 수 있는 프로그램 하나를 만들 때 사용할 수 있는 방법입니다. C++는 이런 과정을 템플릿 프로그래밍 혹은 제네릭 프로그래밍이라고 부릅니다. 함수 템플릿1. 함수 템플릿 사용함수 템플릿 문법템플릿 자료형 위치에 플레이스홀더(placeholder)을 사용합니다. T, U, …, Z 등의 플레이스홀더가 실제 자료형으로 대체됩니다.templateT 함수_이름(U first, ... Z last){ ...}템플릿 헤더는 template 키워드와 괄호로 구성됩니다. 괄호에는 함수 내부에서 사용할 자료형 목록의 심볼을 지정합니다.만약 값으로 전달이 아니라 참조로 전달로 코드를 작성하고 싶다면, T를 T&로 변경하기만 하면 됩니다./*****************************..
[내일배움캠프 Day10] 메모리 관리
·
내일배움캠프/TIL
1.메모리 영역C++ 환경은 메모리를 효율적으로 관리하기 위해서 메모리를 여러 영역으로 나눕니다 2.코드 메모리코드 메모리(code memory)는 프로그램 코드를 보유하는 영역입니다. 프로그램이 실행될 때 C++ 실행 환경은 코드 메모리 위에 있는 문장을 하나하나 실행합니다. 코드 메모리는 프로그램이 종료될 때 해제됩니다. 3.정적 메모리정적 메모리(static memory)는 전역 객체(global object)(전역 객체는 어떤 함수에도 속하지 않는 함수 외부에 있는 객체)**와 정적 객체(static object)**를 보유하는 영역입니다. 프로그램이 종료되면 모든 객체들을 정리하고 메모리 위에서 해제합니다./*************************************************..
[내일배움캠프 Day9] 포인터
·
내일배움캠프/TIL
1. 메모리와 변수메모리는 프로그램이 실행될 때 사용하는 RAM(Random Access Memory)의 한 부분입니다. 메모리는 여러 “칸”으로 이루어져 있고, 각 칸은 고유한 주소를 가집니다.변수는 메모리의 특정 칸에 데이터를 저장하는 “이름표” 역할을 합니다.int a = 10;변수 a는 메모리의 특정 주소를 차지하고, 값 10을 저장합니다.a의 주소는 &a로 접근할 수 있습니다. 2. 포인터포인터는 다른 변수의 메모리 주소를 저장하는 변수입니다. 즉, 포인터는 메모리의 “위치”를 가리키는 역할을 합니다.포인터 사용의 두 가지 핵심 연산은 다음과 같습니다.참조(&): 변수의 메모리 주소를 얻음.역참조(*): 포인터가 가리키는 주소에 저장된 값을 얻음.// 'int' 타입의 데이터를 가리킬 포인터in..
[내일배움캠프 Day8] C++ 과제 진행
·
내일배움캠프/TIL
[1번 과제] CH2 간단한 프로그래밍 구현 #include using namespace std;// 배열 원소들의 합을 계산하는 함수int CalSum(int arr[], int size){ int sum = 0; for (int i = 0; i (sum) / size;}// 배열을 오름차순으로 정렬하는 함수void SortAscending(int arr[], int size){ for (int i = 0; i arr[j]) swap(arr[i], arr[j]); } }}// 배열을 내림차순으로 정렬하는 함수void SortDescending(int arr[], int size){ for (int i = 0; i > num[i]; int sum = CalS..
[내일배움캠프 Day7] Git
·
내일배움캠프/TIL
7일차 Git 특강과 관련된 전공 시간에 배웠던 내용을 추가로 정리하였습니다. Githttps://git-scm.com/ Git git-scm.comfast version control system분산 VCS - 팀 공유 작업에 최적화된 도구누가 언제 무엇을 수정하였는지 tracking - content (not file) oriented수정된 내용을 되돌릴 수 있음Local / Remote Repository Git은 어떤 점에서 분산 시스템이라고 하는가?중앙 버전 제어 시스템은 하나의 중앙 repository를 가지고 있으며, 각 사용자는 중앙 repository로부터 파일을 check out 하고 수정 후에 중앙 repo로 변경 사항을 제출합니다.반면에 Git에서는 각 사용자는 repository를..
[내일배움캠프 Day6] C++ 프로그래밍 기초
·
내일배움캠프/TIL
Hello, World 출력#include // 외부에 있는 파일을 가져오겠다는 의미using namespace std;// int는 함수 종료 시 어떤 타입을 반환할 건지 알려주는 부분int main() { // 프로그램의 시작점 cout  변수입력한 값을 담을 공간이 필요해 프로그래밍 언어는 변수라는 것을 제공합니다. 타입  표현하는 데이터 설명 int정수(양수,0,음수)소수점 Xfloat,double부동 소수소수점 O, 둘은 정밀도 차이char단일 문자작은 따옴표로 한 문자 표현bool논리값true 와 falsestring문자열쌍 따옴표로 문자열 표현, 헤더 필요unsigned양수음수 입력 불가, 양수 범위가 2배 계산기 구현#include using namespace std;int ma..