#include<iostream>
#include<list>
using namespace std;
//链表的每个元素都是一个list
void main4d()
{
list<int>mylist1{ 5, 3, 2, 9 };
list<int>mylist2{ 1, 23, 5, 2 };
list<int>mylist3{ 11, 123, 15, 12 };
list<list<int>>mylist{ mylist1, mylist2, mylist3 }; //链表的每个元素都是一个list
list<list<list<int>>>mylistall{}; //可以这样无限嵌套
for (auto j : mylist)
{
for (auto i : j)
{
cout << i << " ";
}
cout << endl;
}
cin.get();
}
void main3c()
{
list<int>mylist1{ 5, 3, 2, 9 };
list<int>mylist2{ 1, 23, 5, 2 };
mylist1.swap(mylist2); //互换
for (auto i : mylist1)
{
cout << i << endl;
}
cout << endl;
for (auto i : mylist2)
{
cout << i << endl;
}
cout << endl;
mylist1.sort();
mylist2.sort();
mylist2.merge(mylist1); // 合并要排序,否则会报错。
for (auto i : mylist2)
{
cout << i << endl;
}
cin.get();
}
void main2b()
{
list<int>mylist{ 1, 2, 3, 4, 5,88,99,33,44,11,6 };
list<int>mylist1{ 1, 2, 3, 4, 5, 88, 99, 33, 44, 11, 6 };
for (auto ib = mylist.begin(), ie = mylist.end(); ib != ie; ib++)
{
//if (*ib == 3)
//{
// //插入
// mylist.insert(ib,1234);
//}
if (*ib == 4)
{
//删除
mylist.erase(ib);
//为什么要跳出本次循环呢?
//因为删除后,链表的下个节点发生了变化。
break;
}
}
mylist.pop_back(); //删除尾部
mylist.pop_front(); //删除头部
mylist.reverse(); //反转
mylist.sort(); //排序
for (auto ib = mylist.begin(), ie = mylist.end(); ib != ie; ib++)
{
cout << *ib << endl;
}
cin.get();
}
void main1A()
{
list<int> mylist{ 1, 2, 3, 4, 5, 6 };
mylist.push_back(10); //尾部插入 10
mylist.push_front(11); //头部插入
//for (auto i : mylist)
//{
// cout << i << endl;
//}
//cout<< endl;
//mylist.assign(3, 5); //重新初始化链表,填充数据为 5
//for (auto i : mylist)
//{
// cout << i << endl;
//}
//使用迭代器循环内容 ,即指针 正向迭代
for (auto ib = mylist.begin(), ie = mylist.end(); ib != ie; ib++)
{
cout << *ib << endl;
}
cout << endl;
//使用迭代器循环内容 ,即指针 反向迭代
for (auto rb = mylist.rbegin(), re = mylist.rend(); rb != re; rb++)
{
cout << *rb << endl;
}
cout << "第一个:" << mylist.front() << endl;
cout << "最后一个:" << mylist.back() << endl;
cout << "个数:" << mylist.size() << endl;
mylist.clear(); //清空链表
cin.get();
}