Program Languege/STL

list 함수

Frozen0113 2014. 3. 19. 01:51

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