目录
1.什么是list?
在官网中,对list有这样的介绍:
Lists are sequence containers that allow constant time insert and erase operations anywhere within the sequence, and iteration in both directions.
即:list是允许在序列中的任何位置进行恒定时间的插入和删除操作的序列容器,并且可以双向迭代。
于是对list便有这样的介绍:
2.list的构造
list的常见构造有:
#include <iostream>
#include<list>
using namespace std;
int main()
{
list<int> l1;//①构造空的list
list<int> l2(4, 200);//②构造一个有n个值为val的元素的list
list<int> l3(l2);//③l2拷贝构造l3
list<int> l4(l2.begin(), l2.end());//用l2的[begin(),end())构造l4
//范围for遍历l1、l2、l3、l4
for (auto e : l1)
{
cout << e << " ";
}
cout << endl;
for (auto e : l2)
{
cout << e << " ";
}
cout << endl;
for (auto e : l3)
{
cout << e << " ";
}
cout << endl;
for (auto e : l4)
{
cout << e << " ";
}
cout << endl;
return 0;
}
3.list迭代器的使用(list iterator)
#include <iostream>
#include<list>
using namespace std;
int main()
{
list<int> l;
l.push_back(1);
l.push_back(2);
l.push_back(3);
l.push_back(4);
//注意list只能用范围for和迭代器访问
//使用正向迭代器访问l中的元素
list<int>::iterator it = l.begin();
{
while (it != l.end())
{
cout << *it << " ";
++it;
}
cout << endl;
}
//使用反向迭代器访问l中的元素
list<int>::reverse_iterator rit = l.rbegin();
{
while (rit != l.rend())
{
cout << *rit << " ";
++rit;
}
cout << endl;
}
return 0;
}
4.list capacity
#include <iostream>
#include<list>
using namespace std;
int main()
{
list<int> l;
l.push_back(1);
l.push_back(2);
l.push_back(3);
l.push_back(4);
if (!l.empty())
{
cout << l.size() << endl;
}
return 0;
}
5.list modifiers
#include <iostream>
#include<list>
using namespace std;
int main()
{
list<int> l(4, 200);
l.push_front(100);//在list首元素前插入值为val的元素;
for (auto e : l)
{
cout << e << " ";
}
cout << endl;
l.pop_front();//删除list中第一个元素;
for (auto e : l)
{
cout << e << " ";
}
cout << endl;
l.push_back(300);//在list尾部插入值为val的元素;
for (auto e : l)
{
cout << e << " ";
}
cout << endl;
l.pop_back();//删除list中最后一个元素;
for (auto e : l)
{
cout << e << " ";
}
cout << endl;
l.insert(++l.begin(), 150);//在begin()+1位置插入150
for (auto e : l)
{
cout << e << " ";
}
cout << endl;
l.erase(++l.begin());//删除begin()+1位置的数据
for (auto e : l)
{
cout << e << " ";
}
cout << endl;
list<int> ll(3, 100);
cout << "交换前l=";
for (auto e : l)
{
cout << e << " ";
}
cout << "ll=";
for (auto e : ll)
{
cout << e << " ";
}
cout << endl;
l.swap(ll);//交换l与ll的元素
cout << "交换后l=";
for (auto e : l)
{
cout << e << " ";
}
cout << "ll=";
for (auto e : ll)
{
cout << e << " ";
}
cout << endl;
l.clear();
for (auto e : l)
{
cout << e << " ";
}
cout << endl;
return 0;
}
6.list的其他操作
#include <iostream>
#include <list>
using namespace std;
int main()
{
list<int> l1;
l1.push_back(4);
l1.push_back(2);
l1.push_back(3);
l1.push_back(1);
cout << "排序前:";
for (auto e : l1)
{
cout << e << " ";
}
cout << endl;
l1.sort();//排序
cout << "排序后:";
for (auto e : l1)
{
cout << e << " ";
}
cout << endl;
l1.reverse();
cout << "逆置后:";//逆置
for (auto e : l1)
{
cout << e << " ";
}
cout << endl;
list<int> l2,l3;
l2.push_back(4);
l2.push_back(2);
l2.push_back(3);
l2.push_back(1);
l3.push_back(4);
l3.push_back(4);
l3.push_back(5);
l3.push_back(7);
l2.sort();
l3.sort();
l2.merge(l3);//归并
for (auto e : l2)
{
cout << e << " ";
}
cout << endl;
l2.unique();//去重
for (auto e : l2)
{
cout << e << " ";
}
cout << endl;
return 0;
}