双向链表
不支持随机存取([?] / at(?))
A、头尾 添加/移除
B、随机存取
B.1、[?] ==> 越界时,程序 崩溃
B.2、at(?) ==> 越界时,抛异常 out_of_range
C、数据存取
1、构造函数
1.1、默认构造函数 ==> 无参构造函数
1.2、必定需要 复制构造函数 :list<T> lstT(const list& );
1.3、list<T> lstT(iteratorBegin, iteratorEnd); // 迭代器区间[iteratorBegin, iteratorEnd)拷贝给lstT
注意: 这里可以传数组指针,数组指针在特定情况下可以当做迭代器使用
1.4、list<T> lstT(n, elemValue); // n个elemValue复制给lstT
2、赋值
2.1、重载"="操作符
list& = const list& vec;
2.2、void list<T>::assign(beg, end); // [beg, end)区间拷贝给
2.3、void list<T>::assign(n, elemValue);// n个elemValue拷贝给
3、迭代器操作
3.1、const_iterator list<T>::begin(); // 第1个
3.2、const_iterator list<T>::end(); // 最后1个
3.3、const_reverse_iterator list<T>::rbegin(); // 倒数第1个
3.4、const_reverse_iterator list<T>::rend(); // 倒数最后1个
4、插入
注意: 拷贝插入(ZC: 也就是类实例的话,类必须提供复制构造函数)
iterator list::insert(const_iterator, elemValue); // 返回新元素的位置,拷贝插入
void list::insert(const_iterator, size_type n, elemValue);
void list::insert(const_iterator, iterator beg, iterator end); // [beg, end)区间
5、删除
void list::clear();
iterator list::erase(const_iterator beg, const_iterator end); // [beg, end)区间,返回下一个元素的位置
iterator list::erase(const_iterator pos); // 返回下一个元素的位置
6、交换
void list<T>::swap(list<T>&);
7、大小
size_type list<T>::size();
bool list<T>::empty();
void list<T>::resize(size_type);
void list<T>::resize(size_type, elemValue);
8、查找