#include <list>
#include <iostream>
using namespace std;
// 打印list元素
void PrintList(list<int>& L)
{
for (list<int>::iterator it = L.begin(); it != L.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
// 初始化
// list<T> lstT;//list 采用采用模板类实现,对象的默认构造形式:
// list(beg, end);//构造函数将[beg, end)区间中的元素拷贝给本身。
// list(n, elem);//构造函数将 n 个 elem 拷贝给本身。
// list(const list &lst);//拷贝构造函数。
void test01()
{
list<int> mlist1;
list<int> mlist2(10, 10);
list<int> mlist3(mlist2);
list<int> mlist4(mlist2.begin(), mlist2.end());
PrintList(mlist2);
PrintList(mlist3);
PrintList(mlist4);
cout << "-------------------------------" << endl;
}
// list容器的插入和删除
// push_back(elem);//在容器尾部加入一个元素
// pop_back();//删除容器中最后一个元素
// push_front(elem);//在容器开头插入一个元素
// pop_front();//从容器开头移除第一个元素
// insert(pos, elem);//在 pos 位置插 elem 元素的拷贝,返回新数据的位置。
// insert(pos, n, elem);//在 pos 位置插入 n 个 elem 数据,无返回值。
// insert(pos, beg, end);//在 pos 位置插入[beg,end)区间的数据,无返回值。
// clear();//移除容器的所有数据
// erase(beg, end);//删除[beg,end)区间的数据,返回下一个数据的位置。
// erase(pos);//删除 pos 位置的数据,返回下一个数据的位置。
// remove(elem);//删除容器中所有与 elem 值匹配的元素
void test02()
{
list<int> mlist;
// 插入操作
mlist.push_back(100);
mlist.push_front(200);
mlist.insert(mlist.begin(), 300);
mlist.insert(mlist.end(), 400);
mlist.insert(mlist.end(), 200);
PrintList(mlist);
list<int>::iterator it = mlist.begin();
it++;
it++;
mlist.insert(it, 500);
mlist.insert(mlist.end(), 200);
PrintList(mlist);
// 删除
// mlist.pop_back();
// mlist.pop_front();
mlist.remove(200); // 删除匹配所有值
PrintList(mlist);
// mlist.erase(mlist.begin(), mlist.end());
PrintList(mlist);
cout << "-------------------------------" << endl;
}
// list大小操作
// size();//返回容器中元素的个数
// empty();//判断容器是否为空
// resize(num);//重新指定容器的长度为 num,若容器变长,则以默认值填充新位置。如果容器变短,则末尾超出容器长度的元素被删除。
// resize(num, elem);//重新指定容器的长度为 num,若容器变长,则以 elem 值填充新位置。如果容器变短,则末尾超出容器长度的元素被删除。
// 赋值操作
// assign(beg, end);//将[beg, end)区间中的数据拷贝赋值给本身。
// assign(n, elem);//将 n 个 elem 拷贝赋值给本身。
// list& operator=(const list &lst);//重载等号操作符
// swap(lst);//将 lst 与本身的元素互换。
void test03()
{
list<int> mlist;
mlist.assign(10, 10);
list<int> mlist2;
mlist2 = mlist;
PrintList(mlist);
mlist2.push_back(11);
PrintList(mlist2);
cout << "------------------" << endl;
mlist2.swap(mlist);
PrintList(mlist);
PrintList(mlist2);
cout << "------------------" << endl;
}
// 排序 翻转
// reverse();//反转链表,比如 lst 包含 1,3,5 元素,运行此方法后,lst 就包含 5,3,1 元素。
// sort(); //list 排序
void test04()
{
list<int> mlist;
for (int i = 0; i < 10; i++)
{
mlist.push_back(i);
}
PrintList(mlist);
// 容器元素反转
mlist.reverse();
PrintList(mlist);
cout << "--------------------" << endl;
}
bool muCompare(int v1, int v2)
{
return v1 > v2;
}
// 排序
void test05()
{
list<int> mlist;
mlist.push_back(2);
mlist.push_back(1);
mlist.push_back(7);
mlist.push_back(5);
PrintList(mlist);
// 排序默认从小到大排序
mlist.sort();
PrintList(mlist);
// 从大到小排序
mlist.sort(muCompare);
PrintList(mlist);
}
int main()
{
test01();
test02();
test03();
test04();
test05();
getchar();
return 0;
}
来源:oschina
链接:https://my.oschina.net/u/4402652/blog/3524416