참고자료
바킹독의 실전 알고리즘 https://blog.encrypted.gg/category/%EA%B0%95%EC%A2%8C/%EC%8B%A4%EC%A0%84%20%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98?page=1
메모리 상에 원소를 연속하게 배치한 자료구조
O(1) 에 k번째 원소를 확인/변경 가능
추가적으로 소모되는 메모리의 양이 거의 없음
Cache hit rate 가 높음 (메모리 상에 데이터들이 붙어있기 때문에!)
📍 Cache란?
대부분 프로그램은 한번 사용한 데이터를 다시 사용할 가능성이 높고, 그 주변의 데이터도 곧 사용할 가능성이 높은 데이터 지역성을 가지고 있다. 데이터 지역성을 활용하여 메인 메오리에 있는 데이터를 캐시 메모리에 불러와 두고, CPU가 필요한 데이터를 캐시에서 먼저 찾도록 하면 시스템 성능을 향상시킬 수 있다.
📍 Cache hit ratio
cache hit ratio : 적중률 = (캐시히트횟수)/(전체 참조횟수)
cache hit : 참조하려는 데이터가 캐시에 존재할때 캐시 히트
cache miss : 참조하려는 데이터가 캐시에 존재하지 않을때 캐시 미스
메모리 상에 연속한 구간을 잡아야해서 할당에 제약이 걸림.
#include <bits/stdc++.h>
using namespace std;
void insert(int idx, int num, int arr[], int& len){
for(int i = len; i > idx; i--)
arr[i] = arr[i-1];
arr[idx] = num;
len++;
}
void erase(int idx, int arr[], int& len){
len--;
for(int i = idx; i < len; i++)
arr[i] = arr[i+1];
}