배열이 무엇인가?
-메모리상에 원소를 연속하게 배치한 자료구조
Vector(C++)는 무엇인가?
-배열과 유사하나 크기를 자유자재로 변경이 가능
배열의 성질은?
- O(1)에 K번째 원소를 확인/변경 가능
- 추가적으로 소모되는 메모리의 양이 거의 없음
- Cache hit rate가 높음(확률적으로 바로 옆의 메모리를 쓰는 경우가 많음)
- 메모리상에 연속된 구간을 잡아야해서 할당에 제약이 걸림
배열의 용도는?
- 데이터를 자주 바꾸지 않고 쌓아둘때
- 입력값을 담아둘때
- 인덱스에 해당하는 원소를 O(1)으로 접근할때
문제해결에 있어서 배열의 활용 방식은?
ex1) 알파벳 갯수 세기: freg[c - 'a']++;
ex2) 인덱스를 활용한 카운팅
STL
vector<int> v1(4,5); // {5,5,5,5}
cout << v1.size() << '\n'; // 4
v1.push_back(7); // {5,5,5,5,7}
vector<int> v2(3); // {0,0,0}
v2.insert(v2.begin() + 1, 4); // {0,4,0,0}
vector<int> v3 = {1,2,3,4,5}; // {1,2,3,4,5}
v3.erase(v3.begin() + 2); // {1,2,4,5}
for(int e: v3)
cout << e << ' ';
vector<int> v4; // {}
v4 = v3; // deepcopy
v4.pop_back(); // {1,2}
v4.clear(); {}