C++ STL list의 삽입과 삭제에 대해서 간단히 정리하고자 한다.
STL list .insert(iterator, 넣을 값)
L = { A, B, C }
연결리스트는 A->B->C 와 같이 구성되어 있는 것이지만 표기의 편의성을 위해 위와 같이 표기하였다.
위와 같은 연결리스트가 있고, 현재 iterator의 위치가 B라면, L.insert(iterator, 'K') 라는 코드를 실행하게 되면 결과는 다음과 같다.
{A, K, B, C}
iterator의 왼편에 새로운 값이 삽입이 되고, iterator는 원래 가르키던 값을 가르킨다고 생각하면 된다.
( 이해의 편의를 위해서 이렇게 적었다)
그리고, insert 함수의 경우 아무 것도 반환하지 않는다.
다음으로는 삭제에 대해서 알아보자.
Iterator = list.erase(Iterator)
erase 함수는 삭제를 수행한 이후에 iterator를 반환한다. 따라서 반드시 반환되는 iterator을 받아서 갱신(저장)하는 방식으로 구현해줘야 한다.
L = { A, B, C }
위와 동일한 상황이고, 현재 iterator가 B를 가르키고 있는 상태에서,
itr = list.erase(itr)
다음과 같은 구문을 실행하게 되면, L = {A, C } 이와 같은 상황이 되고, iterator는 없어진 B의 우측에 있던 값인 C를 가르킨다고 생각할 수 있다.
'Programming Language > C++' 카테고리의 다른 글
vector upper_bound, lower_bound 사용 (C++) (0) | 2019.09.01 |
---|---|
string 대소문자 변환 (0) | 2019.08.25 |
priority_queue (0) | 2019.08.14 |
(C++) abs 함수의 사용 (0) | 2019.08.07 |
(C++) list STL 출력 및 iterator (0) | 2019.08.04 |