일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 네트워크
- 문제풀이
- Application Layer
- 임베디드
- dp
- Embedded
- Network
- 릿코드
- 다익스트라
- boot sequence
- 백준
- leetcode
- BST
- STL
- BHS
- Transport layer
- Database
- Djikstra
- 부트시퀀스
- DB
- 자료구조
- 응용 계층
- swea
- C++
- 전송 계층
- 데이터베이스
- 프로그래머스
- ps
- 관계형 모델
- baekjoon
- Today
- Total
목록C, C++ (8)
BOBO's Note
보호되어 있는 글입니다.
연관 컨테이너 연관 컨테이너는 시퀀스 컨테이너(예. vector, list, deque 등)과 다르게 key-value 구조를 갖는다. 연관 컨테이너의 종류는 다음과 같다. 이 중 unordered_*은 C++11부터 추가된 컨테이너이다. Container Definition Sort by Key Internal Implementation Time Complexity (검색, 삽입, 삭제) Header set 고유한 키의 집합 O R-B 트리 O(logN) map 키-값의 집합, 고유한 키 O R-B 트리 O(logN) multiset 키의 집합 O R-B 트리 O(logN) multimap 키-값의 집합 O R-B 트리 O(logN) unordered_set 고유한 키의 집합 X 해시 테이블 O(1) ..
Reactive Programming Reactive Programming이란, 실시간으로 반응하는 프로그래밍 또는 비동기적 데이터 스트림을 처리하는 프로그래밍이다. 반응형 프로그래밍에서는 기본적으로 모든 것을 비동기적인 데이터 스트림으로 간주하고, 이 스트림을 옵저버 패턴을 이용해서 처리한다. 옵저버 패턴이란, 옵저버블 객체의 상태가 변할 때 등록된 옵저버들에게 이를 알려주는 디자인 패턴이다. 다른 말로 하자면, 실시간으로 반응하기 위해 프로그램은 각 데이터 스트림을 observe하여 이벤트가 발생하는 것을 notice한다. Functional Programming Functional Programming이란, 프로그램을 수학적 함수의 조합으로 만드는 방식으로 람다 대수로부터 발전했다. 이때 함수는 프..
static 키워드는 어디에서 사용되는지에 따라 다양한 의미를 지닌다. 전역 변수에 붙는 staic 키워드 함수에 붙는 static 키워드 지역 변수에 붙는 static 키워드 클래스 멤버 변수에 붙는 static 키워드 클래스 멤버 함수에 붙는 static 키워드 각 경우에 대해서 살펴보기 앞서 identifier의 속성에 대해서 먼저 알아보자. identifier의 속성 identifier는 변수, 함수, 타입, 객체 등의 이름이다. identifier에는 다음과 같이 세가지 속성이 존재한다. scope(스코프): 접근할 수 있는 위치를 결정한다. local scope(=block scope): 지역 변수, 함수의 매개변수는 선언된 블록 내에서만 접근할 수 있다. global scope(=file s..
보호되어 있는 글입니다.
C++ C++11부터 추가된 튜플은 에 정의되어 있으며, pair를 일반화한 컨테이너로 임의의 형식, 임의의 개수의 원소들을 담을 수 있다. 튜플끼리 비교할 때, 원소가 나열된 순서대로 비교한다. 튜플 t의 i번째 원소를 얻고 싶으면 다음과 같이 std::get() 함수를 사용하면 된다. 실제 함수를 호출할 때에는 i 위치에 변수를 사용할 수 없다. std::get(t); // i should be constant 또한, 데이터 type이 x인 원소를 얻고 싶으면 다음과 같이 std::get() 함수를 사용하면 된다. 이때, type이 x인 원소가 2개 이상이면 컴파일 에러가 발생한다. 즉, type이 고유한 원소에 대해서만 작동한다. std::get(t) std::make_tuple() 함수를 사용해 ..
우선순위 큐(Priority Queue)는 우선순위가 높을수록 앞쪽에 위치하는 큐이다. 내부적으로는 heap 자료구조를 사용하므로 전체 N개의 데이터가 존재할 때, 큐의 첫번째 요소를 얻는 데에 O(1), 삽입 및삭제는 O(logN)의 시간이 걸린다. Heap - 추가 예정 - C++ 에 정의되어 있으며 element 타입, 컨테이너 형식(vector 또는 deque), 정렬 기준(less 또는 greater)을 지정해줄 수 있다. 더보기 컨테이너 적응자(container adaptor)에는 stack, queue, priority_queue가 있다. 컨테이너 적응자의 특징은 다음과 같다. 순차 컨테이너보다 축소된 인터페이스를 제공한다. STL 알고리즘을 직접 적용할 수 없다. element 타입, 순차..

데크(Deque)는 Double-Ended QUEue의 줄임말로, 양쪽 끝에서 삽입/삭제가 가능한 자료구조이다. C++ 에 정의되어 있으며, 선형 배열 형태의 순차 컨테이너이다. 양쪽 끝에서의 삽입 및 삭제가 O(1)에 가능하다. 벡터는 연속된 공간에 메모리를 할당해 데이터를 순차적으로 저장하고, 공간이 부족하면 메모리를 재할당해 데이터를 복사한다. 이러한 재할당 오버헤드를 줄이기 위해 데크에서는 여러 개의 블록으로 쪼개어 저장한다. 따라서 포인터 연산을 통해 원소에 접근할 순 없지만, 인덱스를 통해 접근할 수는 있다. 대표적으로 다음과 같은 연산이 있다. size(): 데크의 크기를 반환한다. empty(): 데크가 비어있다면 true를, 그렇지 않은 경우 false를 반환한다. front(): 데크의..