C++ 标准模板库STL中vector用法介绍
本文所介绍的std::vector用法基于C++11,std::vector定义于头文件
template<
class T,
class Allocator = std::allocator<T>
> class vector;
其包含成员类型其成员函数如下:
成员类型
成员类型 | 定义 |
---|---|
value_type | T |
allocator_type | Allocator |
size_type | 无符号整数类型(通常是std::size_t ) |
difference_type | 有符号整数类型(通常是std::ptrdiff_t ) |
reference | value_type& |
const_reference | const value_type& |
pointer | std::allocator_traits<Allocator>::pointer |
const_pointer | std::allocator_traits<Allocator>::const_pointer |
iterator | 随机访问迭代器 (RandomAccessIterator ) |
const_iterator | 常随机访问迭代器 |
reverse_iterator | std::reverse_iterator<iterator> |
const_reverse_iterator | std::reverse_iterator<const_iterator> |
成员函数
成员函数 | 作用 |
---|---|
(构造函数) | 构造 vector |
(析构函数) | 析构 vector |
operator= | 赋值给容器 |
assign(size_type count, const T& value) assign(InputIt first, InputIt last) assign(std::initializer_list<T> ilist) | 替换容器的内容 |
get_allocator() | 返回相关的分配器 |
1、元素访问
at(size_type pos) | 访问指定的元素,同时进行越界检查 若 pos 不在容器范围内,则抛出 std::out_of_range 类型的异常 |
operator[] | 访问指定的元素 |
front() | 访问第一个元素 |
back() | 访问最后一个元素 |
data() | 返回指向内存中数组第一个元素的指针 |
2、迭代器
begin() cbegin() | 返回指向容器第一个元素的迭代器 |
end() cend() | 返回指向容器尾端的迭代器 |
rbegin() crbegin() | 返回一个指向容器最后一个元素的反向迭代器 |
rend() crend() | 返回一个指向容器前端的反向迭代器 |
3、容量
empty() | 检查容器是否为空,元素数为0时返回true,否则返回false |
size() | 返回容纳的元素数 |
max_size() | 返回可容纳的最大元素数 ,当容器扩展到这个最大值时就不能再自动增大 |
reserve(size_type n) | 预留存储空间 ,n值要比原来的存储空间大才能重新分配空间 但最大值 |
capacity() | 返回当前存储空间能够容纳的元素数 |
shrink_to_fit() | 释放未使用的内存,是减少 capacity() 到 size()非强制性请求。请求是否达成依赖于实现 若发生重分配,则所有迭代器,包含尾后迭代器,和所有到元素的引用都被非法化 |
4、修改器
clear() | 清除内容 |
insert(const_iterator pos, const T& value) insert(const_iterator pos, T&& value) insert(const_iterator pos, size_type count, const T& value) insert(const_iterator pos, InputIt first, InputIt last) insert(const_iterator pos, std::initializer_list<T> ilist) | 插入元素 |
emplace(const_iterator pos, Args&&… args) | 直接于 pos 前插入元素到容器中,将参数 args…转发给构造函数 |
erase(iterator pos) erase(iterator first, iterator last) | 擦除元素或一段序列 |
push_back(const T& x) | 将元素x添加到容器末尾 |
emplace_back(Args&&… args) | 在容器末尾就地构造元素 |
pop_back() | 移除末元素 |
resize(size_type sz, T c = T()) | 改变容器中可存储元素的个数 若重新分配的元素个数比原来的小,则截断序列 若比原来的的大,后面的值是c的值,默认为0 |
swap(vector& other) | 交换内容 |
5、非成员函数
operator== operator!= operator< operator<= operator> operator>= | 按照字典顺序比较 vector 中的值 |
还没有评论,来说两句吧...