list
- vector에 비해 상대적으로 사용할 일이 적음
- 양방향 연결 리스트
- operator[]가 없음
- 양쪽 끝에서 삽입 가능
- reserve가 없음, 메모리를 할당하는 개념이 아님
#include <list>
int main()
{
std::List<int> scores;
scores.push_front(10);// 10
scores.push_front(20);// 20 10
scores.push_back(30);// 20 10 30
}
삽입
- position이 가리키는 위치에 새 요소를 삽입한다.
- void push_front(const value_type& value)
- void push_back(const value_type& value)
std::list<int> scores;
std::list<int>::iterator it = scores.begin();
scores.insert(it, 99);// 99
scores.push_front(10);// 10 99
scores.push_back(50);// 10 99 50
제거
- void pop_front()
- void pop_back()
std::list<int> scores;
// 10 99 50 추가
scores.pop_front();// 99 50
scores.pop_back();// 99
- iterator erase(iterator position)
- void remove(const value_type& value)
std::list<int> scores = {20, 30, 40, 30, 25, 30, 70, 96};
std::list<int>::iterator it = scores.begin();
scores.erase(it);// 30, 40, 30, 25, 30, 70, 96
scores.remove(30);// 40, 25, 70, 96
리스트의 다른 메서드들
- 정렬
- 두 리스트 합치기
- 한 리스트에 빼내서 다른 리스트에 넣기
- 중복인 요소 제거
- :
장점
- 링크드 리스트의 장점
- 삽입과 삭제 O(1);
- 어느 위치든 삽입 가능
단점
- 탐색이 느린 편
- 임의적으로 접근 불가,[]
- 메모리가 불 연속적