STL : vector 矢量容器

本文详细介绍了C++标准库中的Vector容器,它是一个动态数组,支持快速随机访问。内容涵盖Vector的容量管理(如size、max_size、resize和capacity),元素访问方法(如operator[]、at、front、back和data),修改元素的操作(如assign、push_back、pop_back、insert和erase),以及Allocator和非成员函数overloads。文章还提及了针对特殊场景的模板特化,如位集操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

Vector

Capacity

Elements access

Modifiers

Allocator

Non-member Notice overloads

Template specializations


Vector

  • #include<vector>    using namespace std;

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

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

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

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

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

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

  • Vector 接口函数介绍

Capacity

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

Elements access

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

Modifiers

NameRoleNotice
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

NameRoleNotice
get_allocator返回矢量的内存分配器

Non-member Notice overloads

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

Template specializations

NameRoleNotice
vector特殊的标准容器,1 bit 存储(byte 可实现动态位集),返回的不是 bool &,而是一个代理对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值