list 함수
list 함수
생성, 복사, 소멸
동작 |
효과 |
list<ELem> c |
원소 없이 빈 vector를 생성한다. |
list<Elem> c1(c2) |
같은 타입의 다른 vector를 복사하여 생성한다.(모든 원소들은 복사된다) |
list<Elem> c(n) |
디폴트 생성자에 의해서 생성되는 n개의 원소와 함께 vector를 생성한다. |
list<Elem> c(n, elem) |
elem 원소의 n개의 복사본으로 vector를 초기화하여 생성한다. |
list<Elem> c(beg, end) |
[beg, end] 범위의 원소로 vector를 초기화하여 생성한다. |
c.~list<Elem>() |
모든 원소들을 파괴하고 메모리를 해제한다. |
수정하지 않는 동작들
동작 |
효과 |
c.size() |
실제 원소의 개수를 반환한다. |
c.empty() | 컨테이너가 비어 있는지를 판단한다.(size() == 0 보다 빠르다.) |
c.max_size() | 컨테이너가 가질 수 있는 최대 원소의 개수를 반환한다. |
c1 == c2 |
c1과 c2가 같은지 판단한다. |
c1 != c2 |
c1과 c2가 다른지 판단한다. |
c1 < c2 |
c1이 c2보다 작은지를 판단한다. |
c1 > c2 |
c1이 c2보다 큰지를 판단한다. |
c1 <= c2 |
c1이 c2보다 작거나 같은지를 판단한다. |
c1 >= 2 |
c1이 c2보다 크거나 같은지를 판단한다. |
할당과 관련된 동작들
동작 |
효과 |
c1 = c2 |
c2의 모든 원소들은 c1에 할당한다. |
c.assign(n, elem) |
elem 원소의 n개의 복사본을 할당한다. |
c.assign(beg, end) |
[beg, end] 범위의 원소를 할당한다. |
c1.swap(c2) |
c1과 c2의 데이터를 교환한다. |
swap(c1, c2) |
위와 동일. |
원소 액세스
동작 |
효과 |
c.front() | 첫 번째 원소를 반환한다.(원소가 있는지 검사하지 않는다) |
c.back() | 마지막 원소를 반환한다.(원소가 있는지 검사하지 않는다) |
반복자 함수
동작 |
효과 |
c.begin() |
첫 번째 원소를 가리키는 랜덤 액세스 반복자를 반환한다. |
c.end() |
맨 마지막 원소 뒤를 가리키는 랜덤 액세스 반복자를 반환한다. |
c.rbegin() |
역방향에서 첫 번째 원소의 역방향 반복자를 반환한다. |
c.rend() |
역방향에서 마지막 원소 뒤를 가리키는 역방향 반복자를 반환한다. |
원소의 삽입 및 제거
동작 |
효과 |
c.insert(pos, elem) | 반복자 pos 위치에 elem의 복사본을 삽입한다. 그리고 새로운 원소의 위치를 반환한다. |
c.insert(pos, n, elem) |
elem의 n개의 복사본을 반복자 pos 위치에 삽입한다. 반환 값은 없다. |
c.insert(pos, beg, end) |
[beg, end] 범위의 모든 원소들을 복사하여 반복자 pos위치에 삽입한다. 반환 값은 없다. |
c.push_back(elem) | 끝부분에 elem의 복사본을 추가한다. |
c.pop_back() |
마지막 원소를 제거한다(제거된 원소를 반환하지 않는다) |
c.push_front(elem) |
앞부분에 elem의 복사본을 추가한다. |
c.pop_front() |
첫 번째 원소를 제거한다(제거된 원소를 반환하지 않는다) |
c.remove(val) |
값이 val인 모든 원소를 제거한다. |
c.remove_if(op) |
op(elem)가 true를 반환하는 모든 원소를 제거한다. |
c.erase(pos) | 반복자 pos 위치의 원소를 제거한다. 그리고 다음 원소의 위치를 반환한다. |
c.erase(be, end) |
[beg, end] 범위의 모든 원소들을 제거한다. 그리고 다음 원소의 위치를 반환한다. |
c.resize(num) |
원소의 개수를 num개로 변경한다(만약 size()가 증가된다면 새로운 원소들은 그들의 디폴트 생성자에 의해서 생성된다) |
c.resize(num, elem) |
원소의 개수를 num개로 변경한다(만약 size()가 증가된다면 새로운 원소는 elem의 복사본이다. |
c.clear() | 모든 원소를 제거한다.(빈 컨테이너로 만든다). |
list에서 특별하게 수정하는 동작
동작 |
효과 |
c.unique() | 같은 값을 가지는 연속된 원소들의 중복을 제거한다. |
c.uniquie(op) |
op()가 true를 반환하는 연속된 원소들의 중복을 제거한다. |
c1.splice(pos, c2) |
c2의 모든 원소들을 c1의 pos 위치 앞으로 이동한다. |
c1.splice(pos, c2, c2pos) |
c2의 모든 원소들을 c1의 pos위치 앞으로 이동한다. |
c1.splice(pos, c2, c2beg, c2end) |
c2의 [c2beg, c2end]의 원소들을 c1의 pos위치 앞으로 이동한다. |
c.sort() | < 연산자를 정렬 기준으로 정렬한다. |
c.sort(op) |
op()를 정렬 기준으로 정렬한다. |
c1.merge(c2) |
두 컨테이너 모두 정렬되어 있다는 가정하에 c2의 모든 원소들을 c1으로 이동시킨다. |
c1.merge(c2, op) |
두 컨테이너 모두 op()정렬 기준에 의해 정렬되어 있다는 가정하에 c2의 모든 원소들을 c1으로 이동시킨다. |
c.reverse() | 모든 원소들의 순서를 뒤바꾼다. |
list는 STL의 컨테이너 중 가장 강력한 예외 안정성을 제공해 준다. 보장성을 제공하지 않는 함수는 오로지 할당 연산자와 sort() 멤버 함수 뿐이다.
출처 - The C++ Standard Library : A Tutorial and Reference