//stl中的list就是一个双向链表,可以高效的进行插入删除元素,但不支持随机访问
#include<iostream>
#include<list>
using namespace std;
list<int> list1,list2,list3;
void Init()
{
list1.push_back(1);
list1.push_back(2);
list1.push_back(3);
list1.push_back(3);
list2.push_front(6);
list2.push_front(5);
list2.push_front(4);
list3.push_back(7);
list3.push_back(8);
list3.push_back(9);
list3.push_back(10);
}
void Disp(list<int> lt)
{
cout<<lt.size()<<endl;
list<int>::iterator it;
for(it=lt.begin();it!=lt.end();it++)
cout<<*it<<' ';
cout<<endl;
}
bool myfun(const int val)
{
return val>9;
}
int main()
{
Init();
list1.erase(list1.begin());//删除一个元素
list2.erase(++list2.begin(),list2.end());//删除一个区域的元素
list1.remove(3);//链表中匹配元素全部删除
cout<<list1.size()<<endl;
list3.remove_if(myfun);
list3.sort();//默认升序
Disp(list3);
list3.sort(greater<int>());//降序
Disp(list3);
//list1.merge(list2);//合并两个有序链表后有序(升序),list2为空
//Disp(list1);
list1.merge(list2,greater<int>());//合并两个有序链表后有序(降序),list2为空
Disp(list1);
list2.insert(list2.begin(),9);
list2.push_front(8);
list2.push_back(6);
list2.insert(++list2.begin(),3,6);
list2.unique();//删除相邻重复元素(只保留一个)
Disp(list2);
int arr[3]={97,98,99};
list1.insert(++list1.begin(),list2.begin(),list2.end());//插入一个区域的元素
Disp(list1);
list2.insert(list2.begin(),&arr[0],&arr[3]);//插入一个区域的元素
Disp(list2);
return 0;
}
stl(list的用法)
最新推荐文章于 2025-04-16 20:11:27 发布