list 컨테이너
#include <list>
template <typename T, class Alloc = allocator<T>> class list;
🌀 설명
C++ STL에 포함되어 있는 연결리스트(이중 연결 리스트)를 표현하는 컨테이너.
🌀 인자
T : 데이터의 자료형
🌀 선언 및 초기화 예시
//1차원 정수형 연결 리스트 선언
std::list<int> l;
//기본 크기가 3인 연결 리스트 선언
std::list<int> l(3);
//기본 크기가 3이고, 모든 노드의 데이터를 2로 초기화
std::list<int> l(3,2);
//l1와 동일한 연결 리스트 선언
std::list<int> l2(l1);
//2차원 정수형 연결 리스트 선언
std::list<std::list<int>> l;
🌀 멤버함수 (iterators)
//리스트의 첫번재 노드를 가리티는 반복자를 반환
iterator begin() noexcept;
//리스트의 마지막 노드의 다음을 가리키는 반복자를 반환
iterator end() noexcept;
//리스트를 역으로 했을 때, 그 첫번째 노드를 가리키는 역방향 반복자를 반환
reverse_iterator rbegin() noexcept;
//리스트를 역으로 했을 때, 그 마지막 노드의 다음을 가리키는 역방향 반복자를 반환
reverse_iterator rend() noexcept;
🌀 멤버함수 (Capacity)
//리스트의 크기를 반환
size_type size() const noexcept;
//리스트가 비어있음의 여부를 반환
bool empty() noexcept const;
🌀 멤버함수 (Element access)
//리스트이 첫번째 노드를 반환
reference front();
//리스트의 마지막 노드를 반환
reference back();
🌀 멤버함수 (Modifiers)
//리스트를 n개 노드와 val 값으로 새로 할당
void assign(size_type n, const value_type& val);
//리스트의 첫 노드 이전에 val을 추가
void push_front(const value_type& val);
//리스트의 마지막 노드에 다음 val을 추가
void push)back(const vlaue_type& val);
//리스트의 첫 노드를 삭제
void pop_front();
//리스트의 마지막 노드를 삭제
void pop_back();
//리스트의 지정한 위치의 노드 이전에 val를 추가하고, 그 위치를 가리키는 반복자를 반환
iterator insert(const_iterator position, const value_type& val);
//리스트의 지정한 위치의 노드를 삭제하고, 그 위치를 가리키는 반복자를 반환
iterator erase(const_iterator position);
//리스트의 모든 노드를 삭제
void clear() noexcept;
//리스트의 모든 노드를 리스트 l과 교환
void swap(list& l);
//리스트의 크기를 n으로 변경
//크기가 증가하는 경우에, 추가된 노드를 0으로 초기화
//크기가 감소하는 경우에, 기존의 노드는 유지
void resize(size_type n);
🌀 멤버함수 (Operations)
//리스트 l의 모든 노드를 지정한 위치에 삽입
void splice(const_iterator position, list& l);
//리스트에서 val와 동일한 모든 노드를 삭제
void remove(const value_type& vla);
//리스트에서 인접하고 중복되는 노드를 하나를 제외하고 삭제
void unique();
//리스트의 노드가 연결된 순서를 역으로 변경
void reverse();
//리스트의 모든 노드를 오름차순으로 정렬
void sort();
//리스트에 리스트 l의 모든 노드를 merge sort를 수행하여 복사
void merge(list& l);
🌀 예시
#include <iostream>
#include <list>
using namespace std;
int main(void) {
double myDoubles[] = {12.15, 2.72, 73.0, 12.77, 3.14, 12.77, 73.35, 72.25, 15.3, 72.25};
list<double> myList(myDoubles, myDoubles + 10);
list<double>::iterator it;
cout << ">> nodes of myList: ";
for(it = myList.begin(); it != myList.end(); ++it)
cout << *it << " ";
cout << endl;
cout << "<< myList.push_front(1.4);" << endl;
myList.push_front(1.4);
cout << "<< myList.push_back(1.4);" << endl;
myList.push_back(1.4);
cout << ">> nodes of myList: ";
for(it = myList.begin(); it != myList.end(); ++it)
cout << *it << " ";
cout << endl;
cout << "<< myList.sort();" <<endl;
myList.sort();
cout << ">> nodes of myList: ";
for(it = myList.begin(); it != myList.end(); ++it)
cout << *it << " ";
cout << endl;
myList.unique();
cout << ">> nodes of myList: ";
for(it = myList.begin(); it != myList.end(); ++it)
cout << *it << " ";
cout << endl;
return 0;
}
반응형
'CS > 자료구조' 카테고리의 다른 글
[자료구조]이진 힙 (Binary Heap) (0) | 2021.01.12 |
---|---|
[자료구조] 트리 (Tree) (0) | 2021.01.03 |
[자료구조] queue 컨테이너_C++ (0) | 2020.12.17 |
[자료구조] stack 컨테이너_C++ (0) | 2020.12.17 |
[자료구조] 연결 리스트 (Linked List) (2) | 2020.12.14 |