stl에서 지원하는 단순연결리스트

스크린샷 2022-07-01 오후 9.21.04.png

기본적인 형태는 위와 같음

특징

  1. begin()함수로 순방향 반복자를 가질 수 있으며 ++연산자만 사용 가능
  2. std::list보다 빠르게 동작하고 적은 메모리를 사용
  3. #include <forward_list>에 정의되어 있음

std::list와의 함수 비교

스크린샷 2022-07-01 오후 9.23.09.png

순방향 반복자만 지원하기 때문에

  1. before_begin()은 begin()의 앞에 위치하는 Null_Node를 가르킴
  2. std::list는 insert()로 가르키는 위치 바로 앞에 값을 삽입하는데 fwd_list의 경우 반복자 앞의 값을 참고하기 어려워 지정한 위치의 뒤에 값을 삽입함
  3. size()를 지원하지 않음 → 대신에 distance()를 사용하여 길이를 알아낼 수 있음.
int cnt = distance(l1.begin(),l1.end());
  1. remove(40)는 40에 해당하는 값 전부 삭제

  2. remove_if()함수는 흔히 람다함수와 함께 사용함

l1.remove_if([](int n){return n>20;});
//n에 l1의 원소 하나하나를 대입하여 n>20인 경우에 true를 반환하여 삭제됨