STL——list容器
其实也就是链表,通过指针来连接起来
构造函数
list<T> list //list采用模板
list(beg,end) //构造函数将【beg,end)区间中的元素拷贝给自己
list(n,elem) //将n个elem拷贝给本身
list(const list &lst); //拷贝构造函数
void PrintList(list<int>& L1)
{
for (list<int>::const_iterator begin=L1.begin(); begin!=L1.end(); begin++)
{
printf("%d\n",*begin);
}
}
void test01()
{
list<int> List_test1;
List_test1.push_back(1);
List_test1.push_back(2);
List_test1.push_back(3);
List_test1.push_back(4);
PrintList(List_test1);
list<int> List_test2(List_test1.begin(),List_test1.end());
PrintList(List_test2);
list<int> List_test3(5, 10);
PrintList(List_test3);
list<int> List_test4(List_test3);
PrintList(List_test4);
}
赋值和交换
assign(beg,end) //将[end,beg)数据拷贝赋值给本身
assign(n,elem)
list *operator=(const list&lst);
swap(lst)
void test02()
{
list<int> L1;
L1.push_back(1);
L1.push_back(1);
L1.push_back(1);
L1.push_back(1);
//等号赋值
list<int> L2 = L1;
//区域赋值
list<int> L3;
L3.assign(L2.begin()++, L2.end());
//多量重复数赋值
L3.assign(5, 10);
//交换
PrintList(L1);
L1.swap(L3);
PrintList(L1);
}
大小操作函数
size()
empty()
resize(num) //重新指定长度,如果变长用null来填充,如果变短就删除超出范围的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值匹配的元素。
数据存储
迭代器不支持随机访问,只支持++和--
front();
//返回第一个元素。
back();
//返回最后一个元素。
反转和排序
-
reverse();
//反转链表 -
sort();
//链表排序 -
void test03()
{
list<int> L1;
L1.push_back(1);
L1.push_back(2);
L1.push_back(5);
L1.push_back(4);
L1.push_back(3);
PrintList(L1);
L1.reverse();
PrintList(L1);
printf("\n");
PrintList(L1);
L1.sort();
PrintList(L1);
} -