链表
#include <iostream>
#include <list>
using namespace std;
int main(){
list<int> l;
cout<<"list的大小:"<<l.size()<<endl;
//list的大小:0
for (int i=0; i<10; i++)
l.push_back(i); //尾部插入元素 尾插法
cout<<"list的大小:"<<l.size()<<endl;
//list的大小:10
list<int>::iterator it = l.begin();
while(it!=l.end()){
cout<<*it<<" ";
it++;
}
cout << endl;
//0 1 2 3 4 5 6 7 8 9
//list不能随机访问容器中的值,即不能it+5这样的操作。只能一个一个的走,即it++
it=l.begin();
it++;
it++;
it++;
l.insert(it, 100); //100插入在链表第4个位置
for (list<int>::iterator it = l.begin(); it != l.end(); it++)
cout<<*it<<" ";
cout<<endl;
//0 1 2 100 3 4 5 6 7 8 9
l.clear();
cout<<"list的大小:"<<l.size()<<endl;
//list的大小:0
for (int i=0; i<10; i++)
l.push_front(i); //尾部插入元素 尾插法
cout<<"list的大小:"<<l.size()<<endl;
//list的大小:10
for(list<int>::iterator it=l.begin(); it!=l.end(); it++)
cout<<*it<<" ";
cout<<endl;
//9 8 7 6 5 4 3 2 1 0
list<int>::iterator it1 = l.begin();
list<int>::iterator it2 = l.begin();
it2++;
it2++;
it2++;
//要想删除一个区间段。只能用指针++一步一步的指向那个末尾位置,不能直接l.begin()+3
l.erase(it1, it2); //删掉的是区间[it1,it2)
for (list<int>::iterator it=l.begin(); it!=l.end(); it++)
cout<<*it<<" ";
cout<<endl;
//6 5 4 3 2 1 0
l.insert(l.begin(), 100);
l.insert(l.begin(), 100);
l.insert(l.begin(), 100);
l.erase(l.begin()); //删除该位置的元素
for (list<int>::iterator it=l.begin(); it!=l.end(); it++)
cout<<*it<<" ";
cout<<endl;
//100 100 6 5 4 3 2 1 0
cout<<"链表中的第一个元素:"<<l.front()<<endl;
//链表中的第一个元素:100
cout<<"链表中的最后一个元素:"<<l.back()<<endl;
//链表中的最后一个元素:0
l.remove(100); //移除所有100元素的值 remove
for (list<int>::iterator it=l.begin(); it!=l.end(); it++)
cout<<*it<<" ";
cout<<endl;
//6 5 4 3 2 1 0
}