1. assign用法:
void assign ( Iterator first, Iterator last ); //Iterator是任一种容器的泛型指针,list 和vector可
void assign ( int n, const T& u ); //u是向list中加入的值,n是u的个数
2.erase用法:
iterator erase ( iterator position ); //删除iterator所指向的元素
iterator erase ( iterator first, iterator last );
//删除first和last之间的元素
样例代码:
list<Elem>lBackup;
int a[5]={1,2,3,4,5};
vector<Elem> vecRecord(a,a+5);
lBackup.assign(vecRecord.begin(),vecRecord.end());
list<Elem>::iterator iBackup,iTemp;
iBackup=lBackup.begin();
iTemp=lBackup.begin();
advance(iTemp,4);
lBackup.erase(iBackup,iTemp);
注:如将最后一行代码中的iTemp直接写为iBackup+4则报错.
3.merge用法:
void merge ( list x );
注: 调用该函数前,必须将母list排序;该函数可将x中的元素按顺序插入到排好序的母list中去.
4.= 用法:
整个list 赋值;
5.remove和remove_if
void remove ( const T& value ); // T为list中的数据类型,该函数删除值为value的数据.
void remove_if ( Predicate pred );
样例代码:
bool bTest(int x)
{
return (x<=10);
}
class is_odd
{
public:
bool operator() (const int& value) {return (value%2)==1; }
};
lBackup.remove_if(bTest);
lBackup.remove_if(is_odd());
注: remove_if函数删除满足条件的元素.
6.reverse用法:
void reverse(); //该函数将 list 反序.
7.sort用法:
void sort(); //该函数对 list 排序.
8.splice用法. :该函数与函数insert功能差不多.
9.unique用法:
void unique(); //使list内无重复元素.
void unique ( BinaryPredicate binary_pred );
样例代码:
bool same_integral_part (double first, double second)
{ return ( int(first)==int(second) ); }
class is_near
{
public:
bool operator() (double first, double second)
{ return (fabs(first-second)<5.0); }
};
lBackup.unique(same_integral_part);
lBackup.unique(is_near());
10.其余的函数有: back,begin,clear,empty,end,front,insert,max_size,pop_back,pop_front,push_back,push_front,
rbegin,rend,resize,size,swap.这些函数的用法与vector中的同名函数用法相同.