[내일배움캠프 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..
[내일배움캠프 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..
[알고리즘] 시간 복잡도
·
알고리즘
시간 복잡도시간 복잡도(time complexity)란 가장 널리 사용되는 알고리즘의 수행 시간 기준으로, 알고리즘이 실행되는 동안 수행하는 기본적인 연산의 수를 입력의 크기에 대한 함수로 표현한 것입니다.일반적으로 점근 표기법을 사용하여 시간 복잡도를 나타내며, O(⋯) 형태로 표기합니다. O(⋯) 안에는 입력 크기(n)에 따른 실행 횟수를 함수로 표현합니다.  O(1) n2) n3) 2n)  O(1): 상수 시간 복잡도입력 크기에 상관없이 일정한 시간이 걸리는 알고리즘예: 주로 수학 공식등을 이용해 답을 바로 계산해내는 문제O(log n): 로그 시간 복잡도입력 크기가 커질수록 실행 시간이 느리게 증가예: 이진 탐색(Binary Search)O(n): 선형 시간 복잡도입력 크기에 비례하여 실행 시간이..
[Effective C++] 항목 3: 낌새만 보이면 const를 들이대 보자!
·
책/Effective C++
1. constconst는 객체가 수정되지 않아야 한다는 의미적인 제약을 명확히 표현할 수 있습니다. 이 제약을 선언하면 컴파일러가 이를 강제하기 때문에 실수를 줄이고 더 안전한 코드를 작성할 수 있습니다. const를 사용할 수 있는 위치변수와 객체전역, 네임스페이스, 정적 변수에 적용 가능합니다.포인터포인터 자체, 포인터가 가리키는 값에 각각 const를 적용 가능합니다.함수함수의 매개변수, 반환값, 멤버 함수에 const를 사용할 수 있습니다. 2. const와 포인터char greeting[] = "Hello";// 1. 비상수 포인터, 비상수 데이터char *p = greeting;// 2. 비상수 포인터, 상수 데이터cosnt char *p = greeting;// 3. 상수 포인터, 비상수 ..
[Effective C++] 항목 2: #define을 쓰려거든 const, enum, inline을 떠올리자
·
책/Effective C++
#define의 문제점#define은 전처리 지시문으로, 컴파일러가 코드를 읽기 전에 텍스트 치환이 이루어집니다.#define ASPECT_RATIO 1.653컴파일러는 ASPECT_RATIO라는 이름을 알 수 없고, 단지 1.653만을 인식합니다. 그 결과 ASPECT_RATIO라는 이름은 컴파일러가 쓰는 기호 테이블에도 들어가지 않습니다.이로 인해 에러 메시지엔 1.653만 보여 코드 분석과 디버깅이 어려워집니다. 대안 1 : constconst double AspectRatio = 1.653;AspectRatio는 상수 타입의 데이터이므로 컴파일러의 눈에도 보이며 기호 테이블에도 들어갑니다. 상수로 교체하려는 경우 조심해야 할 두 가지 경우1. 상수 포인터(Constant Pointer)의 정의포인..
[C++] Pass by value와 Pass by reference
·
C++
호출되는 함수에 매개변수가 존재한다면, 함수 호출 때의 값(argument)이 호출되는 함수의 매개변수(parameter)로 전달됩니다. 자료 전달은 값으로 전달(pass-by-value), 참조로 전달(pass-by-reference), 포인터로 전달(pass-by-pointer)의 3가지 메커니즘으로 구분합니다. 1. 값으로 전달(pass-by-value)인수(argument)의 값이 복사되어서 매개변수(parameter)에 할당됩니다. 이는 호출되는 함수 쪽에서 인수를 변경하지 않게 만들고 싶을 때 사용되며 ‘읽기 전용 접근(read-only access)’라고 표현하기도 합니다./************************************************************** * 값..
[사전 캠프 Day4] STL
·
내일배움캠프/TIL
요즘 기초가 부족하다고 느껴 프로그래밍 책들을 읽는 중입니다.최근에는 effective c++, 객체지향의 사실과 오해 책을 읽으면서 노션에 정리하고 있는데 effective c++는 블로그에 작성하고자 합니다.https://dev0404.tistory.com/4 [Effective C++] 항목 1: C++를 언어들의 연합체로 바라보는 안목은 필수https://www.yes24.com/Product/Goods/17525589 Effective C++ 이펙티브 C++ - 예스24Effective C++ 이펙티브 C++www.yes24.comEffective C++를 읽으면서 중요하다고 생각하는 부분들을 정리한 글입니다. C++는 다중패러다임 프dev0404.tistory.com 블로그를 정리하면서 과거 ..
[Effective C++] 항목 1: C++를 언어들의 연합체로 바라보는 안목은 필수
·
책/Effective C++
https://www.yes24.com/Product/Goods/17525589 Effective C++ 이펙티브 C++ - 예스24Effective C++ 이펙티브 C++www.yes24.comEffective C++를 읽으면서 중요하다고 생각하는 부분들을 정리한 글입니다. C++는 다중패러다임 프로그래밍 언어(multiparadigm programming language)라고 불립니다. 절차적(procedural) 프로그래밍을 기본으로 하여 객체 지향(object-oriented), 함수식(functional), 일반화(generic) 프로그래밍을 포함하며 메타프로그래밍(metaprogramming) 개념까지 지원하고 있습니다. C++를 단일 언어로 바라보는 눈을 넓혀, 상관 관계가 있는 여러 언어들..