3. 이번에는 pop_back() 함수를 이용하여 리스트 맨 뒤 원소를 제거해보겠습니다. pop_back()은 std::forward_list에서는 제공하지 않는 함수입니다.
list1.pop_back(); // {1, 0, 2, 3, 4, 5, 6}
std::cout << "삽입 & 삭제 후 리스트: ";
for (auto i : list1)
std::cout << i << " ";
}
4. 지금까지 작성한 프로그램을 실행하면 다음과 같은 출력이 나타납니다.
삽입 & 삭제 후 리스트: 1 0 2 3 4 5 6
Note ≡
std::forward_list와 std::list의 push_front(), insert(), pop_front(), erase() 함수 시간 복잡도는 서로 같지만, 실제로는 std::list에서 좀 더 많은 연산이 필요합니다. 왜냐하면 std::list는 각각의 노드에 두 개의 포인터를 가지고 있고, 삽입 또는 삭제 연산 시 두 개의 포인터를 관리해야 하기 때문입니다. 그러므로 이중 연결 리스트에서 포인터를 관리하기 위해서는 단일 연결 리스트보다 대략 두 배의 연산을 수행해야 합니다.