클클
손이 부어서 아직 완전히 제대로 굴릴수는 없습니다만,
그래도 좀 할만합니다.
일이 적응이 됐다고나 할까.
습진때문에 그만두려 했는데 구정까진 일을 계속 해야 할 듯 합니다.
그럼 이만 글 시작합지요 -_-!
----------------------------------------------------------------------------------------
오늘도 시작되는 STL 포스팅.
STL이 뭔 물건인지는 1번째에서 설명드렸지요?
ㄲㄲㄲㄲ
이번엔 Linked List입니다.
List.h 파일과 List.cpp 파일을 찾아보면 이중연결인지 단일연결 리스트인지 알겠지만
.....
C++은 객체지향형 언어입니다.
객체지향 언어가 아니고 객체지향형 언어 ㅡ.,ㅡ..
내부 구현을 일부러 직접 알아낼 필요는 없습니다.
고로, 그냥 썡까도록 하지요.
저 위의 소스코드가 바로 list의 선언방법 입니다.
list.h, 혹은 list를 인클루드 시킨 후,
using namespace std로 std 네임스페이스의 리스트임을 인지시킨 후(STL이니 std겠죠? ㄲㄲㄲ)
list<템플릿> 변수명;
list<템플릿>::iterator 변수명;
을 이용해 기본 선언을 마칩니다.
list는 vector와는 다르게 모든 노드가 하나하나 동적으로 따로 할당되기 때문에
vector처럼 인덱스를 이용한 접근이 불가능합니다.
linked list를 직접 구현해 보셨다면 아시겠지만
포인터를 이용해 각 노드에 접근하지요?
저 iterator도 저번에 말씀드렸듯 포인터입니다.
자.
저 소스코드.
단순하지요?-_-?
push_back() 메소드는 리스트의 맨 끝에 원하는 원소를 추가합니다.
1, 2가 차례로 등록되겠지요.
하지만, push_front() 메소드는 리스트의 맨 앞에 원소를 추가합니다.
고로, 마지막엔 3, 1, 2의 순으로 리스트에 삽입이 되겠지요.
자, 이번엔 삽입과 삭제 예시입니다.
insert 메소드를 이용하면 이터레이터를 이용해 원하는 위치에 원소를 박아넣을 수 있지요.
해당 이터레이터 바로 앞에 삽입됩니다.
erase를 사용하면 해당 이터레이터를 삭제할 수 있으며,
2개의 이터레이터를 인자로 사용시 1번째 이터레이터 부터 2번째 이터레이터 까지 모두 지워버립니다.
remove는 인자로 받은 값을 가지는 모든 노드를 제거하지요.
-_-!
----------------------------------------------------------------------------------------
미리 그림이 준비되지 못한점은 사과드립니다.
오늘 프레스에 손도 끼이고 신참들이 영 개판이라 좀 정신이 없었거든요.
다음엔 좀 더 양질의 포스트로 돌아오겠습니다 -_-!
다음 편은 스택입니다.
'(비정기) Dlbo's Post' 카테고리의 다른 글
Generic Algorithm with C++, 04 - Template Stack! (10) | 2009.02.02 |
---|---|
Dlbo's Post 연기 공지. (2) | 2009.01.20 |
Generic Algorithm with C++, 02 - Template Vector. (2) | 2009.01.06 |
Generic Algorithm with C++, 01 - Introduction to STL. (1) | 2009.01.04 |
Dlbo's Post 연기합니다. (3) | 2009.01.02 |