C++ stl vector

vector是一个序列容器,代表可变大小的array数组。

1、构造函数和析构函数

构造函数:

默认构造函数default (1)
explicit vector (const allocator_type& alloc = allocator_type());创建一个空vector对象,无任何元素
fill (2)
explicit vector (size_type n);构造含n个元素的容器
         vector (size_type n, const value_type& val,  const allocator_type& alloc = allocator_type());构造含n个元素的容
每个元素值为val。
range (3)
template <class InputIterator>
vector (InputIterator first, InputIterator last,  const allocator_type& alloc = allocator_type());利用另一个容器的
[first,last)之间的元素构造一个新容器。
复制构造函数copy (4)
vector (const vector& x);复制容器x中的元素创建一个新容器
vector (const vector& x, const allocator_type& alloc);
move (5)
vector (vector&& x);移动容器x中的元素到新容器中。之后,x容器的值处于不确定状态。
vector (vector&& x, const allocator_type& alloc);
初始列表initializer list (6)
vector (initializer_list<value_type> il,   const allocator_type& alloc = allocator_type());利用初始化列表il来构造
容器vector
析构函数

~vector();
赋值运算符

copy (1)
vector& operator= (const vector& x);拷贝容器x中的元素到新容器中
move (2)
vector& operator= (vector&& x);移动容器x中的元素到新容器中
initializer list (3)
vector& operator= (initializer_list<value_type> il);将初始化列表赋给新容器。

2、迭代器函数

非const修饰的迭代器。

begin()返回指向容器第一个元素的迭代器

iterator begin() noexcept;
const_iterator begin() const noexcept;

end()返回指向容器最后一个元素的下一个位置的迭代器

iterator end() noexcept;
const_iterator end() const noexcept;
 

rbegin()返回一个反向迭代器,指向容器的最后一个元素

reverse_iterator rbegin() noexcept;
const_reverse_iterator rbegin() const noexcept;

rend()返回一个反向迭代器,指向容器的第一个元素的前面一个位置

reverse_iterator rend() noexcept;
const_reverse_iterator rend() const noexcept;

const修饰的迭代器,c++11新增的。

cbegin()返回一个指向容器第一个元素的const迭代器

const_iterator cbegin() const noexcept;

cend()返回一个指向容器的最后一个元素下一个位置的const迭代器。

const_iterator cend() const noexcept;

crbegin()返回一个反向const迭代器,指向容器的最后一个元素

const_reverse_iterator crbegin() const noexcept;

crend()返回一个反向const迭代器,指向容器的第一个元素的前面的一个位置。

const_reverse_iterator crend() const noexcept;

3、容量相关函数

size()返回vector中元素的个数

size_type size() const noexcept;

max_size()返回vector中所能包含的元素的最大个数

size_type max_size() const noexcept;

resize()重置容器vector的大小。若n小于当前容器的元素个数,则将容器截断为n个元素,保留前n个元素,删除后面的元素。若n大于当前容器的元素个数,则将接着当前容器后面扩空元素,使其元素个数达到n,若指定value,则将扩充的元素指定为value,否则,新元素是未初始化的。若n大于capacity时,会重新分配存储区。

void resize (size_type n);
void resize (size_type n, const value_type& val);

capacity()返回分配的内存容量大小,通常等于或大于容器的size。不一定是max_size。当需要更多容量时,可继续分配。

size_type capacity() const noexcept;

empty()判断容器是否为空

bool empty() const noexcept;

reserve()预留n个元素大小空间。使得容器的capacity足够容纳n个元素。当n大于capacity时,会引起容器重新分配内存,增加capacity到n,或者更大。其他情况下,不会重新分配内存,也不会影响capacity。此函数对容器的size和元素没有任何影响。

void reserve (size_type n);

shrink_to_fit() //C++11新增使容器减小capacity使其适合其size。可能会引起内存重新分配,但不影响容器的size,并且也不改变元素值。

void shrink_to_fit();

4、元素访问

operator[]返回下标为n的元素的索引

reference operator[] (size_type n);
const_reference operator[] (size_type n) const;

at[]返回

reference at (size_type n);

const_reference at (size_type n) const;

front()返回容器第一个元素的引用。该函数作用于一个空容器时,会导致未定义的行为。

reference front();
const_reference front() const;

back()返回容器最后一个元素的引用

reference back();
const_reference back() const;

data()c++11新增返回一个指向内存区域的指针

value_type* data() noexcept;
const value_type* data() const noexcept;

5、修改元素函数

assign()重置容器vector中的元素内容,并根据情况改变容器的size。

range (1)
template <class InputIterator>
void assign (InputIterator first, InputIterator last);利用first到last范围的元素重置容器
fill (2)
void assign (size_type n, const value_type& val);利用val重置容器中n个元素
initializer list (3)
void assign (initializer_list<value_type> il);利用初始化列表重置容器

push_back()用val值作为新元素的值添加到容器的尾部,同时改变容器的大小

void push_back (const value_type& val);
void push_back (value_type&& val);

pop_back()删除容器的最后一个元素,同时减小容器的size。

void pop_back();

insert()在指定的位置n之前插入一个新元素,值为val,同时改变元素的大小

single element (1)
iterator insert (const_iterator position, const value_type& val);在position处插入元素值val
fill (2)
iterator insert (const_iterator position, size_type n, const value_type& val);在position之前插入n个值为val的元素
range (3)
template <class InputIterator>
iterator insert (const_iterator position, InputIterator first, InputIterator last);在position之前插入迭代器first到last
之间的元素值
move (4)
iterator insert (const_iterator position, value_type&& val);将val值移动到position之前
initializer list (5)
iterator insert (const_iterator position, initializer_list<value_type> il);将初始化列表插入到position处。

erase()删除容器的中的某个元素,或是某个范围内的元素。同时改变容器的大小。

iterator erase (const_iterator position);
iterator erase (const_iterator first, const_iterator last);

swap()交换两个容器的内容

void swap (vector& x);

clear()删除容器中所有元素,并将容器大小置为0。

void clear() noexcept;

emplace()//c++11新增

template <class... Args>
iterator emplace (const_iterator position, Args&&... args);

emplace_back()//c++11新增

template <class... Args>
void emplace_back (Args&&... args);

6、其他

get_allocator()返回vector相关的allocator对象的拷贝。

allocator_type get_allocator() const noexcept;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值