C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[20060] '그렇게만' 알고 계시지 말고, STL을 한 번 써보세요.
김백일 [cedar] 1605 읽음    2002-07-12 15:40
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++에 비해 허접한 언어라고 생각합니다.

+ -

관련 글 리스트
20035 TList에서 AnsiString을 타입캐스팅 해서 void*넣었을때... 심윤수 1111 2002/07/11
20037     Re:TList에서 AnsiString을 타입캐스팅 해서 void*넣었을때... 양정석 1612 2002/07/11
20061         AnsiString만 저장한다고 하면, TStringList를 쓰세요. 김백일 1822 2002/07/12
20038         TList 대신 std::list를 쓰실 것을 권합니다. 김백일 2827 2002/07/11
20044             TList도 자동으로 메모리를 해제할 수 있습니다. 속도도 더 빠르고... (냉무) 박정모 1435 2002/07/12
20057                 Re:TList는 자동으로 메모리를 해제할 수 없습니다. 속도도 더 느리고... 김백일 1895 2002/07/12
20058                     험... 별로 할 말이 없습니다. 그럼 그렇게 알고 계속 쓰십시요. (냉무) 박정모 1168 2002/07/12
20060                         '그렇게만' 알고 계시지 말고, STL을 한 번 써보세요. 김백일 1605 2002/07/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.