list
list是一个具有头结点的双向循环链表,结构较为复杂,但是非常高效。
现在我创建一个list对象
首先需要包头文件:
#include <list>
std::list<int> l1;
这个例子中,我实例化出了一个存int类型的对象。
接下来我参考cpulscpuls.com,介绍接口的用法:
一:数据操作:
1.assign:
①: void assign (size_type n, const value_type& val);
②: template <class InputIterator>
void assign (InputIterator first, InputIterator last);
①:
std::list<int> first;
first.assign(7, 100);//在first存了7个100
此时,first里存有7个100
给出first的结构:
②:
std::list<int> second;
second.assign(first.begin(), first.end()); //插入一段从first的begin到end结束的区间
那么此时,second也里存有7个100(左闭右开)
int myints[] = { 1776, 7, 4 };//定义一个数组:1776 7 4
first.assign(myints, myints + 3);//插入从myints到myints+1这段区间
此时,first里清除7个100,而是存有1776 7 4。
2.push_front:头插
void push_front (const value_type& val);
std::list<int> mylist(2, 100);//100 100
mylist.push_front(200);//200 100 100
mylist.push_front(300);//300 200 100 100
3.pop_front:头删
void pop_front();
std::list<int> mylist(2, 100);//100 100
mylist.pop_front();//100
4.push_back:尾插
void push_back (const value_type& val);
std::list<int> mylist;
mylist.push_back(1);
mylist.push_back(2);
mylist.push_back(3);
mylist.push_back(4);
此时,mylist里存有1 2 3 4四个数据。
5.pop_back:尾删
void pop_back();
删除尾上的数据,较容易
6.insert:
①: iterator insert (iterator position, const value_type& val);
②: void insert (iterator position, size_type n, const value_type& val);
③: template <class InputIterator>
void insert (iterator position, InputIterator first, InputIterator last);
①:
std::list<int> mylist;
for (int i = 1; i <= 5; ++i) mylist.push_back(i); // 1 2 3 4 5
std::list<int>::iterator it = mylist.begin();//迭代器it指向1
++it;//那么it指向2
mylist.insert(it, 10); //在it前插入10
此时,mylist里存有1 10 2 3 4 5
②: