C++빌더는 많이 쓰이는 윈도용 상용 컴파일러중 ANSI C++ 호환성이 가장 높아서,
STL 사용이 매우 편리한 컴파일러입니다.
STL이 얼마나 편리한지 보여드릴께요.
배열과 리스트의 어중간한 자료구조인 TList에 비해
STL은 자료구조의 용도에 따라,
컨테이너의 끝에서만 삽입/삭제가 일어나며, 랜덤 액세스가 가능한 (동적)배열은 vector,
컨테이너의 앞에서도 삽입/삭제가 일어나며, 랜덤 액세스가 가능한 (동적)배열은 deque,
컨테이너의 임의의 위치에 삽입/삭제가 일어나며, 랜덤 액세스가 불가능한 이중 연결 리스트는 list를 선택해서 사용합니다.
길랄라님의 TList를 사용한 코드를
http://www.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_faq&no=18
deque를 써서 수정하면 다음과 같습니다.
void foo()
{ // 스코프 시작
deque<int> int_deque; // int형 deque 선언
int i;
for (i = 0; i < 100; i++)
int_deque.push_back(i); // 이게 전부. 동적 할당이 필요 없습니다.
for (i = 0; i < 100; i**)
cout << int_deque[i] << endl; // vector나 deque은 operator[]로 랜덤 액세스
// (int*)로 캐스팅할 필요가 없습니다
} // 스코프 종료
// 루프를 사용하여 각 원소를 delete로 삭제할 필요가 없습니다.(delete를 쓸 수도 없지요.)
// int_deque가 스코프에서 벗어나는 순간, 자동으로 모든 원소가 삭제됩니다.
// 동적 할당이 전혀 없으므로 메모리 누수 문제는 전혀 걱정할 필요가 없습니다.
엄청 간단합니다.
개인적으로는 void*는 C++에서 사라져야할 암적인 존재라고 생각합니다.
템플릿으로 전부 해결할 수 있지요.
템플릿과 제네릭 프로그래밍을 지원하지 못하는 자바와 파스칼은 C++에 비해 허접한 언어라고 생각합니다.
|