大胖的部落格

Just a note

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  112 随笔 :: 0 文章 :: 3 评论 :: 0 Trackbacks

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里,且排序

 

posted on 2009-06-18 16:53 大胖 阅读(173) 评论(0)  编辑 收藏 引用 所属分类: STL

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理