c++ vector用法详解

https://zh.cppreference.com/w/cpp/container/vector

定义于头文件<vector>

template<

    class T,

    class Allocator = std::allocator<T>

>class vector;

std::vector是封装动态数组的顺序容器。

    vector的存储是自动管理的,按需扩张收缩。vector通常占用多于静态数组的空间,因为要分配更多内存以管理将来的增长。 vector 重新分配内存的方式不是在每次插入元素时,而只在额外内存耗尽时重分配。分配的内存总量可用 capacity() 函数查询。额外内存可通过对 shrink_to_fit() 的调用返回给系统。

    重分配通常是性能上有开销的操作。若元素数量已知,则 reserve() 函数可用于消除重分配。

    vector 上的常见操作复杂度(效率)如下:

  • 随机访问——常数 O(1)
  • 在末尾插入或移除元素——均摊常数 O(1)
  • 插入或移除元素——与到 vector 结尾的距离成线性 O(n)
T-元素的类型。
T-元素的类型。
T 必须满足可拷贝赋值 (CopyAssignable) 和可拷贝构造 (CopyConstructible) 的要求。(C++11 前)
加诸元素的要求依赖于容器上进行的实际操作。泛言之,要求元素类型是完整类型并满足可擦除(Erasable) 的要求,但许多成员函数附带了更严格的要求。(C++11 起)
(C++17 前)
加诸元素的要求依赖于容器上进行的实际操作。泛言之,要求元素类型满足可擦除 (Erasable) 的要求,但许多成员函数附带了更严格的要求。若分配器满足分配器完整性要求,则容器(但非其成员)能以不完整元素类型实例化。(C++17 起)
Allocator-用于获取/释放内存及构造/析构内存中元素的分配器。类型必须满足分配器 (Allocator) 的要求。若 Allocator::value_type 与 T 不同则行为未定义。

成员类型

 
成员类型定义
value_typeT
allocator_typeAllocator
size_type无符号整数类型(通常是 std::size_t )
difference_type有符号整数类型(通常是 std::ptrdiff_t )
reference
Allocator::reference(C++11 前)
value_type&(C++11 起)
const_reference
Allocator::const_reference(C++11 前)
const value_type&(C++11 起)
pointer
Allocator::pointer(C++11 前)
std::allocator_traits<Allocator>::pointer(C++11 起)
const_pointer
Allocator::const_pointer(C++11 前)
std::allocator_traits<Allocator>::const_pointer(C++11 起)
iterator随机访问迭代器 (RandomAccessIterator)
const_iterator常随机访问迭代器
reverse_iteratorstd::reverse_iterator<iterator>
const_reverse_iteratorstd::reverse_iterator<const_iterator>

 

成员函数

(构造函数)

构造 vector 
(公开成员函数)

(析构函数)

析构 vector 
(公开成员函数)

operator=

赋值给容器 
(公开成员函数)

assign

将值赋给容器 
(公开成员函数) 

get_allocator

返回相关的分配器 
(公开成员函数)

元素访问

at

访问指定的元素,同时进行越界检查 
(公开成员函数)

operator[]

访问指定的元素 
(公开成员函数)

front

访问第一个元素 
(公开成员函数)

back

访问最后一个元素 
(公开成员函数)

data

返回指向内存中数组第一个元素的指针 
(公开成员函数)

迭代器

begin
cbegin

 

返回指向容器第一个元素的迭代器 
(公开成员函数)

end 
cend

 

返回指向容器尾端的迭代器 
(公开成员函数)

rbegin
crbegin

 

返回指向容器最后元素的逆向迭代器 
(公开成员函数)

rend
crend

 

返回指向前端的逆向迭代器 
(公开成员函数)

容量

empty

检查容器是否为空 
(公开成员函数)

size

返回容纳的元素数 
(公开成员函数)

max_size

返回可容纳的最大元素数 
(公开成员函数)

reserve

预留存储空间 
(公开成员函数)

capacity

返回当前存储空间能够容纳的元素数 
(公开成员函数)

shrink_to_fit

(C++11)

通过释放未使用的内存减少内存的使用 
(公开成员函数)

修改器

clear

清除内容 
(公开成员函数)

insert

插入元素 
(公开成员函数)

emplace

(C++11)

原位构造元素 
(公开成员函数)

erase

擦除元素 
(公开成员函数)

push_back

将元素添加到容器末尾 
(公开成员函数)

emplace_back

(C++11)

在容器末尾就地构造元素 
(公开成员函数)

pop_back

移除末元素 
(公开成员函数)

resize

改变容器中可存储元素的个数 
(公开成员函数)

swap

交换内容 
(公开成员函数)

非成员函数

operator==
operator!=
operator<
operator<=
operator>
operator>=

按照字典顺序比较 vector 中的值 
(函数模板)

std::swap(std::vector)

特化 std::swap 算法 
(函数模板)

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值