list的头文件和命名空间
#include<list>
using namespace std;
list的定义
list是动态链表,跟vector一样,是个类模板
list<int>list_int; //定义了一个内部元素是int的链表
list<char>list_char; //定义了一个内部元素是char的链表;
list<CString>list_student; //定义了一个内部元素是Cstring的链表
list<char*>list_pchar; //定义了一个内部元素是char*的链表
list的初始化
#include<list>
using namespace std;
int main(int argc,char* argv[])
{
list<int> one; //定义一个空的,元素类型是int的list链表
list<int>two(4,100); //定义一个包含4个元素,每个元素的值都是100de list链表
list<int>three(two.begin(),two.end());使用two这个对象的迭代器,从开始到结束的所有元素来初始化当前变量
list<int>four(three); //使用three这个对象初始化当前对象
int myints[] = {16,2,77,29};
list<int>five(myints,myints+sizeof(myints)/sizeof(int));//使用一个普通的int数组来初始化当前对象
return 0;
}
list的常用基本操作
list<int>list_int;
①list_int.size(); //返回list链表元素的总个数
②list_int.front(); //返回list_int链表的第一个元素的值
③list_int.back(); //返回list_int链表的最后一个元素的值
④list_int.clear(); //清空list_int的链表,把里面的所有元素删除
⑤list_int.begin(); //返回list_int链表第一个数的迭代器
⑥list_int.end(); //返回list_int链表最后一个数的迭代器
⑦list_int.empty(); //判断list_int链表是否为空
⑧list_int.swap(v1); //v1是另一个动态链表,将list_int 和v1两个链表的元素互换
⑨list_int.reverse(); //把list中的元素顺序倒转
⑩list_int.sort(); //给list排序
a list_int.splice(list_int.begin(),list_2); //将两个list合并
list的动态插入
list支持的动态插入也有多种方式
①调用push_back在尾部插入一个元素,只能一个一个的插入:list_int.push_back(3);
②调用push_front在头部插入一个元素,只能一个一个的插入:list_int.push_front(2);
③调用insert在第一个元素的前面插入一个元素,list_int.insert(list_int.begin(),888);
④调用insert在第一个元素的前面插入3个888元素,list_int.insert(list_int.begin(),3,888);
list<int>list_int,list_2;
list_int.push_back(0);
list_int.push_back(1);
list_int.push_back(3);
list_2.push_back(2);
list_2.push_back(5);
list_2.push_back(6);
list_int.insert(list_int.begin(),list_2.begin(),list_2.end());
int sz_int[] = {4,7,9};
list<int>::iterator itor = list_int.begin();
itor++;
list_int.insert(itor,sz_int+3);
list的遍历
①、list_int.pop_back(); //删除list_int动态链表的最后一个元素
②、list_int.erase(list_int.begin()); //删除第一个元素
③、list_int.erase(itor,list_int.end()); //删除中间的元素
list的遍历
因为list不是数组,所以不能使用下标进行遍历,只能使用迭代器进行遍历
for(list<int>::iterator itor = list_int.begin();itor !=list_int.end();++itor)
{
int value =*itor;
cout<<"value="<<value<<endl;
}