시퀀스컨테이너-벡터(vector)
- 프로그래밍/STL
- 2011. 4. 26. 12:29
1. std 네임스페이스 안에 있음
capacity() : 실제 메모리안에 vector가 메모리의 재할당 없이 가질 수 있는 원소의 개수를 반환하는 함수.
(속도 상당히 느림. 메모리위치변경되면서 반복자 무효화 현상이 일어남.)
레퍼런스들 유효함을 보장됨.
assign() : 매개변수로 들어온 원소나 범위를 할당해준다.( list, deque에서도 가능 )
벡터의 용량 줄이기
=> 벡터는 용량을 줄이는 문법따윈 존재하지 않는다.
벡터의 용량을 줄일려면 간접적인 방법을 이용한다.
template < typename T >
void ShrinkCapacity ( std::vector<T>&v )
{
std::vector<T> temp(v);
v.swap(temp);
}
//위의 함수를 사용하거나 , 아니면 그냥
//std::vector<T> (v).swap(v);
//이런식으로 용량을 줄인다.
swap()을 했을때 기억해야 할 점은 모든 레퍼런스와 포인터, 반복자들은 그들의 컨테이너와 같이 교체 된다는점이다!!!
Member types
of template <class T, class Allocator=allocator<T> > class vector;member type | definition |
---|---|
reference | Allocator::reference |
const_reference | Allocator::const_reference |
iterator | Random access iterator |
const_iterator | Constant random access iterator |
size_type | Unsigned integral type (usually same as size_t ) |
difference_type | Signed integral type (usually same as ptrdiff_t ) |
value_type | T |
allocator_type | Allocator |
pointer | Allocator::pointer |
const_pointer | Allocator::const_pointer |
reverse_iterator | reverse_iterator<iterator> |
const_reverse_iterator | reverse_iterator<const_iterator> |
Member functions
(constructor) | Construct vector (public member function) |
(destructor) | Vector destructor (public member function) |
operator= | Copy vector content (public member function ) |
Iterators :
begin | Return iterator to beginning (public member type) |
end | Return iterator to end (public member function) |
rbegin | Return reverse iterator to reverse beginning (public member function) |
rend | Return reverse iterator to reverse end (public member function) |
Capacity :
size | Return size (public member function) |
max_size | Return maximum size (public member function) |
resize | Change size (public member function) |
capacity | Return size of allocated storage capacity (public member function) |
empty | Test whether vector is empty (public member function) |
reserve | Request a change in capacity (public member function) |
Element access :
operator[] | Access element (public member function) |
at | Access element (public member function) |
front | Access first element (public member function) |
back | Access last element (public member function) |
Modifiers :
assign | Assign vector content (public member function) |
push_back | Add element at the end (public member function) |
pop_back | Delete last element (public member function) |
insert | Insert elements (public member function) |
erase | Erase elements (public member function) |
swap | Swap content (public member function) |
clear | Clear content (public member function) |
Allocator :
get_allocator | Get allocator (public member function ) |
출저: http://www.cplusplus.com/reference/stl/vector/
*생성자, 멤버함수 집중 분석
1.생성자(vector)
2.멤버함수들 선언부들
void resize(int num);
void resize(int num, T value);
=>at과 []의 차이는 at은 범위 에러를 검사하지만 []는 아예 무시한다는것!
(front(), back(), []연산자는 범위에러 검사하지 않으므로 엄청 불안정 하다)
vector<bool>
사진출저: www.winapi.com
=> C++표준 라이브러리에서는 boolean타입을 가지는 특별한 vector를 제공
1비트만을 사용하는 특수화된 버전.
vector<bool>는 bool타입을 위한 vector<>의 템플릿 특수화
이 특수화된 vector는 레퍼런스와 반복자를 다루는 특별한 방법이 필요.
공급 업체마다 구현방법이 다르게 제공
내부적으로 비트연산을 제공
vector<bool>은 표준에 포함되어 있기는 하지만 몇 가지 점에서 문제가 있고 컴파일러마다 지원 범위가 달라 가급적이면 사용을 자재하는 것이 좋다.
추가된 멤버함수
c.flip() : 모든 boolean 원소들을 반전
m[idx].flip : idx의 원소 반전
m[idx] = val : val을 idx의 대입
m[idx] = m[idx2] : idx2의 원소의 값을 idx의 원소의 대입
벡터의 활용
=>게임상의 몬스터들?!
정리 참조
1. www.winapi.com
2. C++ standard Library 책
내가 제일 사랑하는 자료구조인 STL 의 vector의 대해서 정리해보았다.
이젠 다른 사이트 안봐도 돼 +_+!
이 글을 공유하기