일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- 네트워크
- 프로그래머스
- 운영체제
- algorithm
- LeetCode
- 재테크/투자
- Computer Science
- c++
- language
- OS
- 감상문
- 독서
- swea
- 자료구조
- 문제풀이
- 데이터베이스
- Programmers
- db
- BOJ
- SW Expert Academy
- D3
- 법의학
- Database
- 백준
- network
- data structure
- D2
- cs
- 알고리즘
- algogritim
- Today
- Total
목록language (5)
선택은 나의 것
이 문서는 마크다운으로 작성되었으며 github 스타일에 최적화되어있습니다. github 링크를 통한 열람을 권장합니다. Map & UnorderedMap std::map Map이란 Key와 Value를 가진 집합으로, 중복을 허용하지 않는 컨테이너를 말한다. 레드블랙 트리(Red-Black Tree)를 기반으로 구현되어 있다. 따라서 모든 데이터는 정렬되어 저장되며, 정렬이 필요하지 않은 경우에도 자동으로 정렬되기 때문에 불필요하게 감수해야 하는 오버헤드가 발생했다. 입력되는 key 값의 분포가 고르지 못할 경우 balancing에 대한 비용이 계속 들어가기 때문에 성능이 저하된다. 동시에 self-balancing이 있기 때문에 최악의 경우에도 탐색속도는 O(logN)으로 보장된다. std::unor..

이 문서는 마크다운으로 작성되었으며 github 스타일에 최적화되어있습니다. github 링크를 통한 열람을 권장합니다. 표준 템플릿 라이브러리(STL : Standard Template Library) 프로그램에 필요한 알고리즘, 컨테이너, 함수자, 반복자를 Template으로 제공하는 라이브러리이다. C++ template을 통해 제네릭(generic)한 프로그래밍이 가능하다. STL의 대표적인 컨테이너인 vector도 template를 통해 만들어진 것을 볼 수 있다. 템플릿(Template)이란? 함수나 클래스를 개별적으로 다시 작성하지 않고도, 여러 자료형에서 동작할 수 있게 한다. 함수 템플릿(Function Template) 함수의 기능은 명확하지만, 자료형을 모호하게 두는 것. 예를 들어 ..
이 문서는 마크다운으로 작성되었으며 github 스타일에 최적화되어있습니다. github 링크를 통한 열람을 권장합니다. 바이트 패딩(Byte Padding) 바이트 패딩이란 클래스나 구조체에 패딩 바이트를 추가하여 CPU 접근을 더 용이하게 해 주는 것을 말합니다. 자칫 공간 낭비처럼 보일 수 있는 불필요한 패딩 공간을 확보하면서까지 메모리의 크기를 맞추는 이유는 캐시 hit율을 높여 cpu의 연산 횟수를 줄이기 위해서이다. struct test { int a; // 4byte char c1; // 1byte char c2; // 1byte double d; // 8byte short s; // 2byte }; int main() { std::cout
이 문서는 마크다운으로 작성되었으며 github 스타일에 최적화되어있습니다. github 링크를 통한 열람을 권장합니다. 동적 메모리 할당(Dynamic Memory Allocation) 프로그램의 실행 시간 동안 사용자가 직접 사용할 메모리의 공간이나 시점을 결정하여 할당하는 것을 말한다. 이렇게 할당받은 메모리는 프로세스의 힙(heap) 영역에서 할당하며, 프로세스가 실행되는 동안 이 영역은 유지되므로 사용이 끝나면 메모리 낭비를 줄이기 위해 명시적으로 할당을 해제해주어야 한다. 동적 할당의 방법으로는 C++에서 new와 malloc이 있다. (C의 경우 malloc만 가능) new / delete 연산자를 통한 동적 할당 // int(4byte)의 크기만큼 heap 영역에 동적으로 메모리 할당 in..
이 문서는 마크다운으로 작성되었으며 github 스타일에 최적화되어있습니다. github 링크 를 통한 열람을 권장합니다. Pointer(포인터) & Reference(레퍼런스:참조자) Pointer와 Reference는 C++이 다른 언어와 큰 차이점을 가지는 지점이다. 바로 Pointer와 Reference를 이용해 메모리를 직접 핸들링 할 수 있기 때문이다. Pointer의 경우 C에도 있는 개념이지만 Reference는 C++에서 등장한 개념이다. 둘은 용도가 비슷해 보이는 데 어떤 차이가 있으며 Reference가 왜 등장하게 됐는지 알아보자. Pointer(포인터) 메모리의 주소값을 저장하는 변수이다. // 문법 예제 int a = 10; // 변수 선언 int *ptr = &a; // 포인터..