文章目录
1、vector的介绍
2、 vector常用的接口
2.1 构造和析构相关
前提说明:const allocator_type& alloc = allocator_type()是一个配置器相关内容,它是用于指定要使用的空间配置器的,STL提供的默认的空间配置器,我们基本不用管这个参数,除非是我们自己实现了一个空间配置器,然后希望使用我们自己写的空间配置器。因此,我们在使用它的时候,暂时忽略即可!
(1)explicit vector(
const allocator_type& alloc = allocator_type())
;
(2)explicit vector(size_type n.const value_type& val = value_type(),
const allocator_type& alloc = allocator_type());
(3)template <class InputIterator>
vector (InputIterator first, InputIterator last,
const allocator_type& alloc = allocator_type())
;
当然,这个范围也可以是数组/数组的一部分
(4)vector(const vector& x);
拷贝构造,用容器x的内容来构造新的容器
~vector();
释放相关资源
vector& operator=(const vector& x)
;
2.2 迭代器相关
在vector中,有四组迭代器相关的接口
1、begin() & end()
iterator begin();
| const_iterator begin() const;
获取第一个数据位置的iterator或者const_iterator
iterator end();
|const_iterator end() const;
获取最后一个数据的下一个位置的iterator或者const_iterator
2、rbegin() & rend()
reverse_iterator rbegin();
| const_reverse_iterator rbegin() const;
获取最后一个数据位置的reverse_iterator或者const_reverse_iterator
reverse_iterator rend();
| const_reverse_iterator rend() const;
获取第一个数据的前一个位置的reverse_iterator或者const_reverse_iterator
C++11中
3、cbegin() & cend()
const_iterator cbegin() const noexcept
;
const_iterator cend() const noexcept
;
4、crbegin() & crend()
const_reverse_iterator crbegin() const noexcept
;
const_reverse_iterator crend() const noexcept
;
解释:
const_iterator是一种指向const元素的随机访问迭代器类型,具体功效与begin()、end()、rbegin()、rend()功能一致,但是返回值具有的权限并不相同。带c的返回的迭代器指向的元素不可被修改
验证:
2.3 容量相关
size_type size() const
;
size_type capacity()const
;
void resize(size_type n,value_type val = value_type())
;
将容器中有效元素的个数更新为n个,如果n大于原来容器的有效元素size,则多出来的元素使用val填充
验证:
(1)n<= size
(2)n > size
①n <= capacity
②n > capacity
void reserve(size_type n)
;
假设原来的容器的容量为capacity
(1)n <= capacity
直接忽略,不做处理
(2)n > capacity
2.4 访问元素相关
at—通过下标访问元素
二者的功能一致,都是访问下标n处的元素。
唯一不同的是:处理异常情况(比如访问越界)的方式不同
operator[]—>触发assert断言
at---->抛出异常
back–获取最后一个元素
value_type* data() noexcept;
const value_type* data() const noexcept
;
代码演示:
2.5 修改相关
pop_back -->将容器的最后一个元素删除
验证:
演示:
验证:
OK,看到这里,关于vector的基本使用已介绍完毕~,下篇介绍一下vector中的一个重难点:迭代器失效问题,我们下篇见!