C++ 标准模板库STL中vector用法介绍

本文所介绍的std::vector用法基于C++11,std::vector定义于头文件中,其定义如下:

template<
    class T,
    class Allocator = std::allocator
> 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 中的值

你可能感兴趣的:(c/c++)