본문 바로가기

CS/자료구조와 알고리즘

배열(array)

배열이 무엇인가?

-메모리상에 원소를 연속하게 배치한 자료구조

 

Vector(C++)는 무엇인가?

-배열과 유사하나 크기를 자유자재로 변경이 가능

 

배열의 성질은?

  1. O(1)에 K번째 원소를 확인/변경 가능
  2. 추가적으로 소모되는 메모리의 양이 거의 없음
  3. Cache hit rate가 높음(확률적으로 바로 옆의 메모리를 쓰는 경우가 많음)
  4. 메모리상에 연속된 구간을 잡아야해서 할당에 제약이 걸림

 

배열의 용도는?

  1. 데이터를 자주 바꾸지 않고 쌓아둘때
  2. 입력값을 담아둘때
  3. 인덱스에 해당하는 원소를 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(); {}

'CS > 자료구조와 알고리즘' 카테고리의 다른 글

BFS  (0) 2023.02.10
덱(Deque)  (0) 2023.02.09
큐(Queue)  (0) 2023.02.08
스택(Stack)  (1) 2023.02.07
연결리스트  (0) 2023.02.06