list
与vector相比,没有capacity和reserve;增加了push_front和pop_front。
resize:
1、size变大时,分配新空间,创建临时对象,新空间全部用临时对象的拷贝填充。
2、size变小时,创建临时对象,销毁额外size里的对象,销毁临时对象。
添加元素:
1、创建临时对象,拷贝入list。
删除元素:
1、直接销毁对象。
list的操作
list<A> li(4);
li.remove(A()); //从list中删除值与输入参数相等的元素,元素类型必须重载==操作符
li.remove_if(fun); //fun是以元素类型为参数,返回bool型的函数;删除使fun返回true的元素
li.unique(); //若相连的元素相同,只保留一个
li.unique(fun2); //fun2是以两个元素类型参数为输入,返回bool型的函数;若相邻的元素使fun2为真,保留第一个,删除其余的
li.reverse(); //反转list
li.sort(); //按<排序,元素类型必须重载<操作符
li.sort(fun2); //按fun2的返回结果排序
list<A> li2(4);
li.splice(li.begin(), li2); //将参数2的list的元素插在第一个参数所指的位置前
li.splice(li.begin(), li2, li2.begin()); //将参数2的list中以参数3所指位置开始的元素插在参数1所指的位置前
li.splice(li.begin(), li2, li2.begin(),li2.end()); //将list2的区间内的元素插到list1中itrator所指位置前
li.merge(li2); //若两个list都已排序,将list2整合到list1里,且排序
li.merge(li2, fun2); //若两个list都已按fun2规则排序,将list2整合到list1里,且排序