코딩: 상수변수, 메모이제이션, STL


코딩 사진 (15)

1. 상수 변수

컴퓨터 프로그래밍에서 상수는 한 번 할당된 값을 변경할 수 없는 변수입니다.

컴파일 타임에 알려진 상수는 고정 값을 저장하는 데 사용되며 코드 전체에서 리터럴 값 대신 자주 사용되므로 읽기 및 유지 관리가 더 쉽습니다.

대부분의 프로그래밍 언어에서 상수는 키워드 “const”와 상수 이름 및 초기 값으로 선언됩니다.

예를 들어 JavaScript에서 값이 3.14 159인 “PI”라는 상수를 다음과 같이 선언할 수 있습니다.

constant PI = 3.14159; 상수가 선언되고 초기화되면 새 값을 할당할 수 없습니다.

이 작업을 시도하면 언어 및 컨텍스트에 따라 컴파일 타임 오류 또는 런타임 예외가 발생합니다.

상수는 일반적으로 다음과 같은 다양한 목적을 위해 프로그래밍에 사용됩니다.

예를 들어 수학 또는 물리적 상수를 정의하거나 구성 값을 설정하거나 조건문 또는 루프에서 사용할 명명된 상수를 선언합니다.

코드 전체에서 하드 코딩된 값 대신 상수를 사용하면 변경 사항이 코드 베이스 전체에 분산되는 대신 중앙의 한 위치에서 수행될 수 있으므로 시간이 지남에 따라 코드를 쉽게 업데이트하고 유지 관리할 수 있습니다.

2. 암기

컴퓨터 프로그래밍에서 메모이제이션은 함수 호출의 결과를 캐싱하고 동일한 입력이 다시 수행될 때 재사용함으로써 알고리즘의 성능을 최적화하는 데 사용되는 기술입니다.

주어진 입력 값 집합으로 함수가 호출되면 함수의 결과가 계산되어 캐시 또는 메모리에 저장됩니다.

다음에 동일한 입력으로 동일한 함수가 호출되면 함수는 다시 계산하지 않고 단순히 캐시된 결과를 반환합니다.

이를 통해 기능을 실행하는 데 필요한 시간과 처리 능력을 크게 줄일 수 있습니다.

메모이제이션은 일반적으로 동일한 하위 문제의 반복 계산을 포함하는 재귀 알고리즘에 사용됩니다.

이러한 하위 문제의 결과를 캐싱함으로써 메모이제이션은 재귀 알고리즘의 성능을 크게 향상시킬 수 있습니다.

메모이제이션은 종종 관련 알고리즘 최적화 기술인 동적 프로그래밍과 혼동됩니다.

그러나 동적 프로그래밍에서는 문제를 더 작은 하위 문제로 나누고 아래에서 위로 해결하는 반면, 메모이제이션에는 함수 호출 결과를 캐싱하는 작업이 포함됩니다.

메모이제이션은 Python, JavaScript 및 C++를 포함한 많은 프로그래밍 언어로 구현될 수 있습니다.

그러나 메모이제이션은 제대로 사용하지 않으면 많은 양의 메모리를 소모할 수 있으므로 주의해야 합니다.

또한 모든 기능이 저장에 적합한 것은 아닙니다.

부작용이 있는 함수나 비결정적 함수의 경우 특히 그렇습니다.

3. 일리노이

표준 템플릿 라이브러리(STL)는 C++용 강력한 데이터 구조 및 알고리즘 라이브러리입니다.

벡터, 목록, 맵, 집합과 같은 광범위한 데이터 구조와 데이터 정렬, 검색 및 조작을 위한 알고리즘을 제공합니다.

정렬 알고리즘은 STL 라이브러리의 핵심 구성 요소입니다.

이를 통해 프로그래머는 응용 프로그램의 특정 요구 사항에 따라 다양한 방식으로 데이터 모음을 구성할 수 있습니다.

STL은 여러 가지 정렬 알고리즘을 제공합니다.

첫째, QuickSort는 피벗 값을 기준으로 데이터를 두 그룹으로 나누고 각 그룹을 재귀적으로 정렬하는 널리 사용되는 정렬 알고리즘입니다.

둘째, MergeSort 알고리즘은 각 하위 목록을 쉽게 정렬할 수 있을 때까지 데이터를 더 작은 하위 목록으로 나눈 다음 정렬된 하위 목록을 다시 병합합니다.

셋째, HeapSort는 바이너리 트리의 특수한 형태인 바이너리 힙을 구축하여 데이터를 정렬하고 반복적으로 힙에서 가장 큰 요소를 추출하여 리스트의 끝에 위치시키는 알고리즘이다.

STL 라이브러리에는 InsertionSort, SelectionSort 및 BubbleSort와 같은 다른 많은 정렬 알고리즘도 포함되어 있습니다.

각 알고리즘은 정렬할 데이터 유형에 따라 고유한 강점과 약점을 가지고 있습니다.

정렬 알고리즘 외에도 STL은 데이터 조작 및 처리를 위한 다양한 기타 알고리즘을 제공합니다.

여기에는 데이터 검색, 복사 및 변환을 위한 알고리즘과 난수 생성 및 통계 분석 수행을 위한 알고리즘이 포함됩니다.

전반적으로 STL 라이브러리는 C++ 프로그래머를 위한 강력한 도구로, 데이터 조작 및 처리를 위해 바로 사용할 수 있는 광범위한 데이터 구조와 알고리즘을 제공합니다.

특히 정렬 알고리즘은 다양한 방식으로 데이터 컬렉션을 정렬하기 위한 유연하고 강력한 도구를 제공하는 라이브러리의 핵심 구성 요소입니다.