로딩
요청 처리 중입니다...

C 언어로 C++ STL vector 구현(push_back)

 C 언어로 C++ STL vector 구현(push_back)

이전 글(동적 배열을 사용하는 스택)을 읽은 사람들 중 상당수는 C++의 STL vector와의 유사성을 느꼈을 것이라고 생각한다. C++의 vector는 동적 배열을 사용하며 배열이 가득 찰 때마다 배열의 크기를 1.5배 혹은 2배(컴파일러마다 다름) 씩 늘려주는 방식으로 구현되어있다고 한다.

이번 글에서는 malloc, realloc을 사용하여 한번 vector를 구현해 보고자 한다. 이전 글들과 같이 malloc, realloc 함수를 매크로로 정의해주자.

STL의 vector가 타입을 가리지 않던 것처럼, 여기서도 그냥 자기가 원하는 타입을 구조로 정의하여 사용해 줄 수 있다. 초기 vector의 크기는 1이며, 현재 원소가 없으므로 vector의 마지막 인덱스는 -1이다.

이제 push_back 함수를 작성해보자. 이 함수는 vector에 여유 공간이 존재하면 vector의 맨 뒤에 원소를 삽입하고, 여유 공간이 없다면 vectorFull() 함수를 호출한다.

당연하겠지만,...