STL : vector 矢量容器

目录

Vector

Capacity

Elements access

Modifiers

Allocator

Non-member Notice overloads

Template specializations


Vector

  • #include    using namespace std;

  • 矢量容器 :单向开口的连续内存空间,底层封装:数组;

  • 预留内存空间不够时,可以动态扩展(容器满了则新建容器同时进行拷贝);

  • 顺序序列:容器元素按照严格的线性顺序排列;

  • 动态数组:支持对序列中任意元素进行快速直接访问,高效的随机访问的容器;

  • 越靠后的插入或删除执行效率越高,删除不会释放限制的空间;

  • 拥有一段连续的内存空间,支持随机存取,但在中间进行插入和删除会造成内存块的拷贝;

  • Vector 接口函数介绍。

STL : vector 矢量容器_第1张图片

Capacity

Name Role Notice
size 返回矢量实际存储元素数目(实际数据量)
max_size 返回矢量所能存储的最大的元素数目
resize 更改矢量实际存储,可自定义默认值填充 resize(num)
resize(num, elem)
capacity 不分配内存的情况下可以存储的最多元素个数
empty 判断矢量存储是否为空
reserve 更改矢量 capacity,避免 push_back 自动分配 reverse(len),预留空间,不可初始化,不可赋值
shrink_to_fit 请求降低存储使得 capacity 和 size 匹配

Elements access

Name Role Notice
operator[ ] 迭代器访问容器元素
at 更加安全的访问元素,能判别是否越界并确定程序中止
front 返回第一个元素的引用
back 返回最后一个元素的引用
data (c11) 返回一个指向数组中第一个元素的指针(向量内部使用)

Modifiers

Name Role Notice
assign 替换旧元素为向量元素分配新值,也可修改向量大小 assign(begin, end)
assign(n, elem)
push_bach 向矢量的末尾添加元素
pop_back 删除矢量最后一个元素
insert 指定位置插入一个或多个元素(构造并复制) insert(iter, elem)
insert(iter,count,elem)
insert(pos, _first, _last)
erase 删除元素 erase(pos)
erase(_first, _last)
swap 交换容器,内存释放(拷贝构造,capacity == size )
clear 清除容器
emplace 指定位置插入一个元素(就地构造,转发实现)
emplace_back 矢量末尾插入一个元素(就地构造,转发实现)

Allocator

Name Role Notice
get_allocator 返回矢量的内存分配器

Non-member Notice overloads

Name Role Notice
relational operators 关系型函数( =、>、<)
swap 交换容器的内容

Template specializations

Name Role Notice
vector 特殊的标准容器,1 bit 存储(byte 可实现动态位集),返回的不是 bool &,而是一个代理对象

你可能感兴趣的:(STL,数据结构,c++)