| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
- react
- matplotlib
- 파이썬
- MySQL
- stack
- array
- 알고리즘
- heap
- Python
- MySQL 서버 구축
- join
- 구조체
- pandas
- 환경설정
- 연관 함수
- 러스트
- Set
- Split
- HashMap
- 원격 데스크탑
- 메소드
- Sort
- Algorithm
- generic
- in
- MongoDB
- list
- 소유권
- Rust
- numpy
- Today
- Total
목록Programming Language (146)
미생
람다 표현식1. 함수형 언어나 파이썬과 같은 인터프리터를 사용하는 언어에서 사용되던 클로저(Closure)가 네이티브 프로그래밍 언어에 도입되면서 람다 함수, 람다 표현식이 되었다. 2. 즉시 호출 형태로 사용하면 코드의 위치가 곧 호출 위치이므로 로직을 한눈에 파악할 수 있으며, 인라인(inline) 함수로 만들어 성능을 최적화하는 데도 도움이 된다.(인라인이 가능하면, 호출 오버헤드를 제거할 수 있다.) 3. 외부 변수 캡처 방법 [=] : 선언부 범위의 모든 변수 읽기 전용으로 사용 [&] : 선언부 범위의 모든 변수 참조 형식으로 사용되어 읽기와 쓰기 가능[변수 1] : 변수1을 읽기 전용으로 사용4. 람다 표현식을 함수 객체로 사용하 때는 호출부를 작성하지 않는다. 또한 다른 함수나 객체에 매개..
범위 기반 for 문1. 데이터 집합을 정확하고 안전하게 순회할 수 있다. 2. 순회할 수 있는 데이터 형식이 제한된다. 즉 컴파일러가 반복 횟수를 명확히 알 수 있는 데이터 형식만 사용할 수 있다.따라서 포인터로 동적 할당한 메모리나 매개변수로 전달받은 배열은 사용할 수 없고, 반복자가 없는 stack, queue도 사용할 수 없다.#include #include using namespace std;int main(void) { array numbers { 7, 8, 2, 5, 3, 9, 0, 4, 1, 6 }; // for 구문 활용 배열 출력 for (int i = 0; i
L-Value1. 메모리에 "이름" 이 있고, 그 위치가 계속 존재하는 값. 즉, 주소를 가질 수 있고, 대입문의 왼쪽에 올 수 있는 값int x = 10; // x는 L-ValueR-Value1. 이름이 없고, 일시적으로만 존재하는 값. 즉, 임시 값 또는 대입문의 오른쪽에만 올 수 있는 값10 // R-value (임시 리터럴)x + 5 // R-value (계산 결과)func() // R-value (함수가 반환하는 임시 값)2. R-Value Reference 는 C++ 11에서 추가된 내용으로 이름 없는 임시 객체(R-value)를 가리킬 수 있는 참조. 즉, 기존에는 절대 참조할 수 없었던 “임시 값”을 잡아서 사용할 수 있게 해주는 기능. 3. 임시 객체(R-value)를 참조..
튜플1. 다른 종류의 데이터 형식을 한 집합으로 묶을 수 있다. 2. 튜플 객체의 원솟값을 조회할 수 있다(형식 : get(튜플 객체 이름)) 3. tie 함수로 구조적 바인딩이 가능하며, 변수로 변환을 원치않을 경우 std::ignore를 사용하면 된다. 예시) tie(monster_type, std::ignore, hp, power) = get_monster_status(monster_a_inst); 3. 튜플과 구조체의 차이튜플은 인덱스를 기반으로 원소에 접근하지만, 구조체는 명시적인 이름으로 접근한다.튜플은 비교 연산자(=)를 기본으로 제공하지만, 구조체는 사용자가 오버로딩해야 한다.튜플은 swap 함수로 두 객체의 원솟값을 교환할 수 있지만, 구조체는 원소별로 일일이 교환 해야한다.튜플은 범위 ..
스마트 포인터1. 메모리 할당과 해제 등을 개발자가 직접 관리하면서 발생하는 메모리 누수 같은 문제를 해소할 수 있다. 2. 스마트 포인터를 이해하려면 RAII 디자인 패턴을 이해해야 한다.RAII(Resource Acquisition Is Initialization) 디자인 패턴1. 직역하면 '리소스 할당은 초기화' 라는 뜻으로, 자원의 할당(획득)은 객체의 생성자에서 이루어지고, 자원의 해제(반환)는 객체의 소멸자에서 보장되어야 한다는 클래스 불변성이 핵심이다. 2. 특징은 동적으로 할당된 메모리가 생성된 범위를 벗어나면 자동으로 해제된다.스마트 포인터 종류1. unique_ptr1) unique_ptr 은 포인터 객체에 RAII 디자인 패턴을 적용할 수 있는 범용 스마트 포인터 클래스이다. 메모리 ..
알고리즘1. C++ 표준 라이브러리의 알고리즘은 코드의 복잡도를 줄이고 효율성을 높일 수 있으며 다양한 작업을 단순화하고 최적화할 수 있다. 2. 일반 함수로 제공되며 컨테이너의 구조와 상관없이 독립적으로 동작한다.알고리즘 종류1. 정렬1) 데이터를 정렬하는 이유는 처리 속도를 올리기 위해서이다. 데이터를 저장하고 저장된 데이터를 빠르게 찾으려고 데이터를 정렬한다.1.1 퀵 정렬(std::sort)1) n개의 데이터를 정렬한다고 가정했을 때 최악의 경우에는 이차 시간[O(n^2)] 번의 비교를 수행하지만, 평균적으로 지수 로그 시간[O(n log n)] 번의 비교를 수행한다. 2) std::array나 std::vector 처럼 임의 접근 반복자(index를 통한 접근으로 이해하면 쉽다)를 지원하는 컨테..