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 获取在不重新分配内存的情况下可容纳的元素最大数量 |