初始化
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);