std::vector, Iterator 직접 구현하며 이해하기
들어가며 C++ 표준 라이브러리 (STL) std::vector 는 순차적인 자료(배열)를 저장하는 템플릿 클래스입니다. 처음 프로그래밍을 배우던 시절 수년간 동적 메모리 할당(Dynamic Allocation) 을 오직 new, delete 구문에만 의존해 왔습니다. (STL이 뭔지 몰랐습니다.) 그러던 어느날 std::vector 를 처음 사용해 본 후 그 편리함과 왜 이런 존재를 나는 몰랐지라는 허무함이 공존했던 기억이 납니다. 하지만 new, delete를 다년간 사용하며 배웠던 포인터, 메모리에 대한 깊은 이해 는 현재까지도 프로그래밍 지식의 좋은 밑바탕이 되었음을 스스로 느낍니다. 편리함의 이면 std::vector를 접한 후 대부분의 동적 배열, 동적메모리 할당 은 제 코드에서 사라지게 되었고, 남이 만든 클래스(물론 표준이지만)의 사용법을 배우는 것에만 집착하게 됩니다. "이게 어떻게 만들어져 있지" 보다 "어떻게 이것을 사용하지" 라는 생각만 남아 깊은 공부에 별 도움이 되지 않는 도구의 사용법에만 관심이 있었습니다. 대학시절의 자신에게 돌아간다면, 그건 (사용법은) 별로 중요하지 않다고 말해주고 싶군요. 오히려 " 비슷하게 직접 한번 만들어 보는 것은 어때 " 라고 권해주고 싶습니다. 또한, STL은 C++의 강력한 표준 라이브러리이지만 언제나 사용가능한 것은 아닙니다. (아두이노 IDE는 C++언어를 지원하지만 STL은 사용이 불가, 작은 메모리환경) std::vector 그럼 직접 나만의 벡터 를 만들어 보겠습니다. 앞으로 소개할 예제는 vector Class, Nested Class로 iterator Class 구현까지 포함한 내용입니다. 물론 표준 라이브러리만큼 훌륭하진 않지만 좋은 공부가 될 것입니다.