거의 cplusplus 페이지 파파고 버전입니다.
vector
헤더에는
벡터는 크기를 변경할 수 있는 배열을 나타내는 시퀀스 컨테이너입니다.
벡터는 요소를 연속적으로 저장한다. 이로인해 벡터는 배열처럼 효율적으로 요소를 일반 포인터처럼 액세스할 수도 있다. 그러나 배열과 달리 메모리 크기는 컨테이너에 의해 자동으로 처리되어 동적으로 변경될 수 있다.
원래 배열은 새 요소가 들어올때마다 재할당을 하고 값을 복사한다. 하지만 이것은 처리 시간 측면에서 상대적으로 비용이 많이 드는 작업이다. 그래서 벡터는 컨테이너에 요소가 추가될 때마다 재할당을 하지 않는다
백터는 들어올 요소의 개수보다 큰 사이즈의 값으로 동적할당을 하고, 그 메모리가 꽉차게 되면 그제서야 더 큰 크기의 새 배열을 동적할당을 한다. 그리고 원래 들어있던 배열의 요소는 새 배열로 복사한다.
따라서 배열에 비해 벡터는 스토리지를 효율적으로 관리하고 동적으로 확장할 수 있는 기능을 제공하는 대신 더 많은 메모리를 소비한다.
다른 동적 시퀀스 컨테이너(덱, 리스트 및 forward_lists)에 비해 벡터는 요소에 접근하는 것이 매우 효율적이며(배열과 마찬가지로), end에 요소를 추가하거나 제거하는 것이 비교적 효율적이다. end가 아닌 다른 위치에 요소를 삽입하거나 제거하는 작업의 경우, 다른 작업보다 성능이 떨어지며 lists와 forward_lists보다 일관성이 낮은 iterator와 reference가 있다.
컨테이너 속성
template < class T, class Alloc = allocator<T> > class vector; // generic template
템플릿 매개변수
멤버 타입
template < class T, class Alloc = allocator<T> > class vector
{
public:
typedef T value_type;
typedef Allocator allocator_type;
typedef typename allocator_type::reference reference;
typedef typename allocator_type::const_reference const_reference;
typedef implementation-defined iterator;
typedef implementation-defined const_iterator;
typedef typename allocator_type::size_type size_type;
typedef typename allocator_type::difference_type difference_type;
typedef typename allocator_type::pointer pointer;
typedef typename allocator_type::const_pointer const_pointer;
typedef std::reverse_iterator<iterator> reverse_iterator;
typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
}
default (1)
explicit vector (const allocator_type& alloc = allocator_type());
fill (2)
explicit vector (size_type n, const value_type& val = value_type(),
const allocator_type& alloc = allocator_type());
range (3)
template <class InputIterator>
vector (InputIterator first, InputIterator last,
const allocator_type& alloc = allocator_type());
copy (4)
vector (const vector& x);
(1) 기본 생성자 - 요소가 없는 빈 컨테이너를 만든다.
(2) fill 생성자 - n개의 요소로 컨테이너를 만든다. 각 요소는 val
의 복사본입니다.
(3) 범위 생성자 - [first
, last
]와 같은 수의 요소로 컨테이너를 구성하고 각 요소는 해당 범위의 해당 요소로부터 동일한 순서로 구성됨.
(4) 복사 생성자 - x
에 있는 각 요소의 복사본을 같은 순서로 컨테이너를 구성.
iterator begin();
const_iterator begin() const;
size_type
size_type
size_type
operator[]
와 다르게 인자가 범위를 벗어나면 자동으로out_of_range
예외를 던진다.swap
함수르르 사용해야한다. ex)vector<T>().swap(x);
비 멤버함수
cplusplus