【C++】vector容器常见用法总结

初始化

vector<int> v1(10); //定义了10个整型元素的向量,<>中式元素的类型名
vector<int> v2(10, 1); //定义了10个整型元素的向量,且每个元素的初值为1
vector<int> v3(v2); //用v2向量来创建v3向量
vector<int> v4(v2.begin(), v2.begin() + 3); //定义了v4值为v2中的前三个元素
int v5[5] = { 1,2,3,4,5 };
vector<int> v6(v5, v5 + 5); //从数组中获得初值

语法

C++ Vectors能够使用标准运算符: ==, !=, <=, >=, <, 和 >. 要访问vector中的某特定位置的元素可以使用 [] 操作符

vectors之间大小的比较是按照词典规则

两个vectors被认为是相等的,如果:
    1.  它们具有相同的容量
    2.  所有相同位置的元素相等

常用函数

void push_back(const TYPE &val); //添加值为val的元素到当前vector末尾
void pop_back(); //删除当前vector最末的一个元素

TYPE front(); //返回vector的第一个元素的引用
TYPE back(); //返回vector的最后一个元素的引用

iterator begin(); //返回一个指向vector起始元素的迭代器
iterator end(); //返回一个指向vector末尾元素的下一位置的迭代器

size_type size(); //返回当前vector所容纳元素的数目
bool empty(); //若vector为空,返回true;否则,返回false
void clear(); //清空当前vector的所有元素

//返回当前vector指定位置loc的元素的引用,比[]更安全,能够辨别出是否越界,并在越界时抛出异常
TYPE at( size_type loc );

//赋num个值为val的元素到vector中,赋值前清空vector
void assign( size_type num, const TYPE &val );
//将区间[start,end)的元素赋值到当前vector,赋值前清空vector
void assign( input_iterator start, input_iterator end );

//删除指定位置loc的元素,并返回指向删除的最后元素的下一位置的迭代器
iterator erase( iterator loc );
//删除区间[start,end)的所有元素,并返回指向删除的最后元素的下一位置的迭代器
iterator erase( iterator start, iterator end );

//在指定位置loc前插入值为val的元素,返回指向这个元素的迭代器
iterator insert( iterator loc, const TYPE &val );
//在指定位置loc前插入num个值为val的元素
void insert( iterator loc, size_type num, const TYPE &val );
//在指定位置loc前插入区间[start,end)的所有元素
void insert( iterator loc, input_iterator start, input_iterator end );

reverse_iterator rbegin(); //返回一个指向vector末尾元素的迭代器
reverse_iterator rend(); //返回一个指向vector起始元素的前一位置的迭代器

//C++11前
//若当前大小大于 count ,则减小容器为其首 count 个元素
//若当前大小小于 count ,则后附额外元素,并以 value 的副本初始化
void resize( size_type count, T value = T());
//C++11后
//若当前大小大于 count ,则减小容器为其首 count 个元素
//若当前大小小于 count ,
// 1) 则后附额外的默认插入的元素
// 2) 则后附额外的 value 的副本
void resize( size_type count ); //(1)
void resize( size_type count, const value_type& value ); //(2)

其它相关函数(需要头文件algorithm)

//去掉vector中重复的元素
sort(v.begin(), v.end());
v.erase(unique(v.begin(), v.end()), v.end());

//C++20前
//反转 [first, last) 范围中的元素顺序,没有返回值
template< class BidirIt >
void reverse( BidirIt first, BidirIt last );
例:
reverse(v.begin(),v.end());

//C++20前
//复制 [first, last) 中的元素到始于d_first的另一范围
//返回指向目标范围中最后复制元素的下个元素的输出迭代器
template< class InputIt, class OutputIt >
OutputIt copy( InputIt first, InputIt last, OutputIt d_first );
例:
copy(v.begin(),v,end(),v1.begin());

//C++20前
//返回范围 [first, last) 中等于value的首个元素
//返回指向首个满足条件的迭代器,或若找不到这种元素则为 last
template< class InputIt, class T >
InputIt find( InputIt first, InputIt last, const T& value );
例:
find(v.begin(),v.end(),10);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值