std::forward list는 단순 연결리스트를 구현해 놓은 래퍼입니다. 성능이나 메모리를 크게 낭비하지 않으면서 간단하고 에러를 유발하지 않는 인터페이스를 제공합니다.
std::vector는 반복자(iterator)를 사용해서 원소의 이동이 앞 뒤로 자유롭지만 단순연결리스트는 그렇지 못하기 때문에 단방향으로만 이동가능합니다.
#include <iostream>
#include <forward_list>
#include <vector>
int main()
{
std::vector<std::string> vec = {
"Lewis Hamilton", "Lewis Hamilton", "Nico Roseberg",
"Sebastian Vettel", "Lewis Hamilton", "Sebastian Vettel",
"Sebastian Vettel", "Sebastian Vettel", "Fernando Alonso"
};
auto it = vec.begin();
std::cout << "가장 최근 우승자ㅣ " << *it << std::endl;
it += 8;
std::cout << "8년 전 우승자: " << *it << std::endl;
advance(it, -3);
std::cout << " 그후 3년 뒤 우승자ㅣ " << *it << std::endl;
// -------------------------------------------------------
std::forward_list<std::string> fwd(vec.begin(), vec.end());
auto it1 = fwd.begin();
std::cout << "가장 최근 우승자: " << *it1 << std::endl;
advance(it1, 5);
std::cout << "5년 전 우승자: " << *it << std::endl;
// forward list는 한 방향으로만 움직일 수 있기때문에 다음 코드는 오류
/*advance(it1, -2);
std::cout << "2년 후 우승자: " << *it << std::endl;*/
}
'ALGORITHM > 코딩테스트를 위한 자료구조와 알고리즘 with c++ 정리' 카테고리의 다른 글
std::list의 삽입 또는 삭제 함수 사용하기 (0) | 2021.12.20 |
---|---|
기본적인 사용자 정의 컨테이너 만들기 (0) | 2021.12.20 |
std::vector-가변 크기 배열 (0) | 2021.12.20 |
배열 (0) | 2021.12.20 |
단순연결 리스트(singly linked list) (0) | 2021.12.20 |