C++ List 容器
开发工具与关键技术:Visual Studio、C++
作者:张国军
撰写时间:2019年07月25日
list 是一个双向链表容器,可高效地进行插入删除元素。
list 不可以随机存取元素,所以不支持 at.(pos)函数与[]操作符。
使用list之前需要引用头文件:#include
//list 采用采用模板类实现, 对象的默认构造形式:list lstT; 如:
list lstInt; //定义一个存放 int 的 list 容器。
list lstFloat; //定义一个存放 float 的 list 容器。
list lstString; //定义一个存放 string 的 list 容器。
list 的赋值
#include <iostream>
#include <list>
using namespace std;
void stackshow(list<int>& s)
{
for (list<int>::iterator it = s.begin(); it != s.end();it++)
{
cout << *it<<" ";
}
cout << endl;
}
void main()
{
//list.assign(beg, end); //将[beg, end)区间中的数据拷贝赋值给本身。
//注意该区间是左闭右开的区间。
//list.assign(n, elem); //将 n 个 elem 拷贝赋值给本身。
//list& operator=(const list &lst); //重载等号操作符
//list.swap(lst); //将 lst 与本身的元素互换。
list<int> lstIntA, lstIntB, lstIntC, lstIntD;
lstIntA.push_back(1);
lstIntA.push_back(3);
lstIntA.push_back(5);
lstIntA.push_back(7);
lstIntA.push_back(9);
lstIntB.assign(lstIntA.begin(), lstIntA.end()); //1 3 5 7 9
lstIntC.assign(5, 8); //8 8 8 8 8
lstIntD = lstIntA; //1 3 5 7 9
lstIntC.swap(lstIntD);//将lstIntC容器元素和lstIntD容器元素交换
cout << "----------lstIntA-----------"<<endl;
stackshow(lstIntA);
cout << "----------lstIntB-----------"<<endl;
stackshow(lstIntB);
cout << "----------lstIntC-----------"<<endl;
stackshow(lstIntC);
cout << "----------lstIntD-----------"<<endl;
stackshow(lstIntD);
}
list 头尾的添加移除操作
void main()
{
//list.push_back(elem); //在容器尾部加入一个元素
//list.pop_back(); //删除容器中最后一个元素
//list.push_front(elem); //在容器开头插入一个元素
//list.pop_front(); //从容器开头移除第一个元素
list<int> lstInt;
lstInt.push_back(1);
lstInt.push_back(3);
lstInt.push_back(5);
lstInt.push_back(7);
lstInt.push_back(9);
lstInt.pop_front();
cout << "pop_front 1"<<endl;
stackshow(lstInt);
lstInt.pop_front();
cout << "pop_front 2"<<endl;
stackshow(lstInt);
lstInt.push_front(11);
cout << "push_front(11)"<<endl;
stackshow(lstInt);
lstInt.push_front(13);
cout << "push_front(13)" << endl;
stackshow(lstInt);
lstInt.pop_back();
cout << "pop_back() 1" << endl;
stackshow(lstInt);
lstInt.pop_back();
cout << "pop_back() 2" << endl;
stackshow(lstInt);
}