stl.vector用法总结

0 -- 内部类型定义
vector在标准模块中的定义:
template <class T, class Alloc = alloc>
class vector
{
......
};
typedef T value_type; vector的元素类型  
typedef value_type * pointer; 指针类型  
typedef const value_type * const_pointer; const指针类型  
typedef value_type * iterator; 迭代器类型  
typedef const value_type * const_iterator; const迭代器类型  
typedef value_type & reference; 引用类型  
typedef const value_type & const_reference; const引用类型  
typedef size_t size_type; 用作vector下标索引以及容量大小的数值类型  
typedef ptrdiff_t difference_type; 用作vector两个元素之间位置差距的数值类型  
1 -- 构造函数
vector<T>()

构造空的vector实例,不包含任何内容
vector<T>(const vector<T> & x)

拷贝构造函数,使用实例x初始化
vector<T>(size_type n)

构造vector实例,使用n个T()构造的实例的变量初始化
vector<T>(size_type n, const T& value)

使用vector实例,并用n个T类型的实例数据初始化
vector<T>(InputIterator begin, InputIterator end)

构造vector实例,以迭代器[begin, end)指定的元素初始化
2 -- 赋值函数
vector<T> & operator = (const vector<T> & x)

赋值函数,将一个vector赋值给当前变量
void assign(size_type n, const T & val)

用n个T类型的实例替换现有的元素
void assign(InputIterator begin, InputIterator end)

用迭代器[begin, end)指定的元素替换现有的元素
3 -- 元素访问函数(迭代器、引用及访问方法)
reference at(size_type n)

返回第n个元素的引用
const_reference at(size_type n)

返回第n个元素的const引用
reference operator[](size_type n)

返回第n个元素的引用
const_reference operator[](size_type n)

返回第n个元素的const引用
reference front()

返回第一个元素的引用。(如果vector为空,使用导致coredump)
reference back()

返回最后一个元素的引用。(如果vector为空,使用导致coredump)
const_reference front()

返回第一个元素的const引用。(如果vector为空,使用导致coredump)
const_reference back() const

返回最后一个元素的const引用。(如果vector为空,使用导致coredump)
iterator begin()

返回的迭代器指向vector的第一个元素
iterator end()

返回的迭代器指向vector的“末端元素的下一个”。
通常称为超出末端迭代器(off-the-end iterator),表明它指向了一个不存在的元素。如果vector为空,begin返回的迭代器与end返回的迭代器相同。
const_iterator begin()

返回const迭代器,指向vector的第一个元素
const_iterator begin()

返回const迭代器,指向vector的“末端元素的下一个”
reverse_iterator rbegin()

返回反向迭代器,指向vector的最后一个元素
reverse_iterator rend()

返回反向迭代器,指向vector第一个元素的前一个位置
const_reverse_iterator rbegin() const

返回const反向迭代器,指向vector的最后一个元素
cosnt_reverse_iterator rend()

返回const反向迭代器,指向vector第一个元素的前一个位置
4 -- 添加元素函数
void push_back(const T & x)

新生成一个T类型数据,调用T的拷贝构造函数以x为模板初始化新变量,放入到vector的末尾。
iterator insert(iterator pos, const value_type & x)

在vector的pos位置处插入元素x。返回插入元素的迭代器。
void insert(iterator pos, size_type n, const value_type & x)

在vector的pos位置开始处插入n个元素x。
void insert(iterator pos, InputIterator begin, InputIterator end)

在vector的pos位置开始处插入迭代器[begin, end)指代的元素。
inline void swap(vector<T>&x, vector<T> & y)

非成员函数,交换两个vector的元素
void reserve(size_type n)

如果容量不足以容纳n个元素,则扩大。(该操作有可能修改vector,导致以前所有的迭代器和引用失效)
void resize(size_type n)

将元素数量改为n,如果vector因此变大了,多出来的新元素都需以元素类型的default构造函数构造完成
void resize(size_type n, value_type x);

将元素数量改为n,如果vector因此变大了,多出来的元素都是x的副本
5 -- 删除函数
void clear()

删除vector中所有元素,清空容器。
void pop_back()

删除vector的最后一个元素
iterator erase(iterator pos)

删除迭代器pos指向的元素,返回原元素后一个元素在删除后的vector中的迭代器或者end()。
iterator erase(iterator begin, iterator end)

删除迭代器[begin, end)指代的元素,返回原范围元素后一个元素在删除后的vector中的迭代器或者end()。
6 -- 比较函数
inline bool operator == (const vector<T> & ls, const vector<T> & rs)

非成员函数,判断两个vector是否相等。首先比较二者的元素个数是否相同;如果个数相同则遍历vector,调用元素的“==”运算符比较是否相同。
inline bool operator != (const vector<T> & ls, const vector<T> & rs)

非成员函数,判断两个vector是否不等。结果为对“==”运算符的取反。
inline bool operator < (const vector<T> & ls, const vector<T> & rs)

非成员函数,判断前者是否小于后者。遍历vector,返回第一对不满足“==”运算符的元素的“<”比较结果。
inline bool operator > (const vector<T> & ls, const vector<T> & rs)

非成员函数,判断前者是否大于后者。遍历vector,返回第一对不满足“==”运算符的元素的“>”比较结果。
inline bool operator <= (const vector<T> & ls, const vector<T> & rs)

非成员函数,判断前者是否"<="后者。结果为"!(rs < ls)"。
inline bool operator >= (const vector<T> & ls, const vector<T> & rs)

非成员函数,判断前者是否">="后者。结果为"!(ls < rs)"。
7 -- 元素容量函数
bool empty() const

判断当前vector是否为空
size_type size() const

获取当前vector包含元素的个数
size_type max_size() const

返回vector可容纳元素的最大数量
size_type capacity() const

获取在不重新分配内存的情况下可容纳的元素最大数量
原文地址:https://www.cnblogs.com/motadou/p/1615905.html