특징

<aside> 💡

  1. O(1)에 k번째 원소를 확인/변경 가능
  2. 추가적으로 소모되는 메모리양(=overhead)가 거의 없음
  3. Cache hit rate(=캐시 메모리)가 높음
  4. 메모리 상에서 연속한 구간을 잡아야해서 할당 제약이 걸림 </aside>

Code

k번째 원소 확인 변경, O(1)

int arr[10] = {10,20,30}

// k번째 원소 확인
arr[1] 

// k번째 원소 변경
arr[1] = 40

*** 임의의 위치에 원소를 추가, 임의의 위치에 있는 원소를 제거하는 행위는 O(N)**

*STL Vector

<aside> 💡

vector는 배열과 거의 동일한 기능을 수행하는 자료구조

단, vector는 크기를 자유자재로 늘이거나 줄일 수 있다는 장점

</aside>

특징

벡터의 할당연산자는 깊은 복사

std::vector<int> vec1 = {1, 2, 3};
std::vector<int> vec2;

vec2 = vec1; // vec1의 요소들이 vec2에 깊은 복사됩니다.

벡터 순회

vector<int> v1 = {1,2,3,4,5,6};

// 1. range-based for loop ( since c++ 11, best case)
// - int e는 복사본 
for(int e : v1)
	cout << e << ' ';
// - int& e는 원본
for(int& e : v1)
	cout << e << ' ';

// 2. default case
for(int i = 0; i < v1.size(); i++)
	cout << v1[i] << ' ';
	
// 3. WRONG
for(int i = 0; i <= v1.size()-1; i++)

코드 작성 시, 유의사항

전체를 특정 값으로 초기화

1.memset

2.for문을 돌면서 초기화 ( Default )