Program Languege/STL

vector 함수

Frozen0113 2014. 3. 19. 01:51

vector 함수

 

 

생성, 복사, 소멸

 

동작 

 효과

 vector<ELem> c

 원소 없이 빈 vector를 생성한다.

 vector<Elem> c1(c2)

 같은 타입의 다른 vector를 복사하여 생성한다.(모든 원소들은 복사된다)

 vector<Elem> c(n)

 디폴트 생성자에 의해서 생성되는 n개의 원소와 함께 vector를 생성한다.

 vector<Elem> c(n, elem)

 elem 원소의 n개의 복사본으로 vector를 초기화하여 생성한다.

 vector<Elem> c(beg, end)

 [beg, end] 범위의 원소로 vector를 초기화하여 생성한다.

 c.~vector<Elem>()

 모든 원소들을 파괴하고 메모리를 해제한다.

 

 

수정하지 않는 동작들

 

동작 

 효과

 c.size()

 실제 원소의 개수를 반환한다.

 c.empty()  컨테이너가 비어 있는지를 판단한다.(size() == 0 보다 빠르다.)
 c.max_size()  컨테이너가 가질 수 있는 최대 원소의 개수를 반환한다.

 capacity()

 재할당 없이 가질 수 있는 최대의 원소 개수를 반환한다.
 reserver()  용량이 충분하지 않다면 용량을 증가시킨다.
 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.at[idx]

 인덱스가 idx인 원소를 반환한다.(만약 idx가 범위를 벗어났다면 범위 에러 예외를 발생시킨다)

 c[idx]

 인덱스가 idx인 원소를 반환한다.(에러 검사를 하지 않는다)

 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.erase(pos)  반복자 pos 위치의 원소를 제거한다. 그리고 다음 원소의 위치를 반환한다.

 c.erase(be, end)

 [beg, end] 범위의 모든 원소들을 제거한다. 그리고 다음 원소의 위치를 반환한다. 

 c.resize(num)

 원소의 개수를 num개로 변경한다(만약 size()가 증가된다면 새로운 원소들은 그들의 디폴트 생성자에 의해서 생성된다)

 c.resize(num, elem)

 원소의 개수를 num개로 변경한다(만약 size()가 증가된다면 새로운 원소는 elem의 복사본이다.

 c.clear()  모든 원소를 제거한다.(빈 컨테이너로 만든다).

 

 

 

 

vector는 논리적인 에러 검사 루틴을 거의 제공하지 않는다. 오로지 예외를 검사하는 함수는 at()뿐이다.

 

 

 

출처 - The C++ Standard Library : A Tutorial and Reference