在使用之前,需要完成兩件事:
(1) #include <list>
(2) using namespace std;
聲名變量:
list<int> intlist;
一、構造、析構函數、= 運算符
1、功能:聲明list容器。4種方式
list<int> first; // empty list of ints
list<int> second (4,100); // four ints with value 100。4個100
list<int> third (second.begin(),second.end()); // iterating through second
list<int> fourth (third); // a copy of third
2、功能:注銷list。 ~list ( );
3、原型:list1 = list2;
功能:將list2賦值給list1,包括list的所有元素以及list2的size
返回值:this指針
二、返回迭代器類的函數
begin、end 、rbegin、rend
舉例:
Begin指向第一個元素,黃色箭頭。end是最後一個元素的後一個位置,黑色箭頭。Begin和end一般一起使用,按正序輸出list。rbegin指逆序的第一個元素,即最後一個元素,藍色箭頭。rend指逆序的最後一個元素的前一個位置,即第一個元素的前一個位置,紅色箭頭。
Rbegin和rend一般一起使用,用於逆序輸出list。
三、list的容量相關的函數
1、empty
原型:bool empty ( ) const;
功能:判斷lsit是否為空,即size是否為0
返回值:size為0,返回true,否則,返回false
2、size
原型:size_type size() const;
功能:返回lsit中元素的個數
返回值:size_type
3、Max_size
原型:size_type max_size () const;
功能:返回lsit的最大容量
返回值:
4、resize
原型:void resize ( size_type sz, T c = T());
功能:重新分配lsit的大小。如果sz小於目前的size就將多余的值刪除;如果sz大於目前的size,就在增加容量,且用c填充。例如:
mylist.resize(5); //將size定為5
mylist.resize(8,100); //將size定為8,多出的用100填充
mylist.resize(12); //將size定為12
四、獲取元素
1、front
原型: reference front ( );
const_reference front ( ) const;
功能:獲取第一個元素
返回值:第一個元素的值
2、back
原型:reference back ( );
const_reference back ( ) const
功能:獲取最後一個元素
返回值:最後一個元素
五、修改lsit的函數
1、assign
原型:void assign ( InputIterator first, InputIterator last );
void assign ( size_type n, const T& u)
功能:為list重新分配空間並賦值。將[first,last)范圍內的值或者n次u值的拷貝賦給list
返回值:無
2、push_front:從頭插入一個元素。pop_front:刪除第一個元素
push_back:在尾部插入一個元素。 pop_back:刪除最後一個元素
3、insert
原型:iterator insert ( iterator position, const T& x );
void insert ( iterator position, size_type n, const T& x );
template <class InputIterator>
void insert ( iterator position, InputIterator first, InputIterator last );
功能:插入元素
insert ( iterator position, const T& x ) :在position位置處插入元素x
insert ( iterator position, size_type n, const T& x ):在position位置處開始插入n個x
insert ( iterator position, InputIterator first, InputIterator last ):在position位置處開始插入
[first,last)范圍內的元素。
返回值:只有第一個函數返回插入的元素所在位置
4、erase
原型:iterator erase ( iterator position );
iterator erase ( iterator first, iterator last );
功能:清除鏈表中position 處或者[first,last)范圍內的元素。會減少list的size值。
返回值:清除的最後一個元素的下一個位置(迭代器)
5、swap
原型:void swap ( list<T,Allocator>& lst)
功能:將兩個lsit交換
6、clear
功能:清空list
六、操作類的函數
1、splice
原型:設list2調用了splice函數
void splice ( iterator position, list<T,Allocator>& x );將list x中的所有元素插入到調用該函數的list2的position處。List x會被清空。
void splice ( iterator position, list<T,Allocator>& x, iterator i );將x中指向i的位置處的元素插入到list2的position處。X會將i位置處的值刪除。
void splice ( iterator position, list<T,Allocator>& x, iterator first, iterator last ); 將x中[first,last)位置處的元素插入到list2的position處。
功能:Move elements from list to list。將一個lsit中的值移動到另一個list
2、remove
原型:void remove ( const T& value );
功能:清除鏈表中特定的值value,lsit的size會相應減少。
返回值:無
3、remove_if
原型:template <class Predicate>
void remove_if ( Predicate pred );
功能:在滿足Predicate pred返回true值時,移除元素。pred可以是一個返回bool類型的函數,還可以是一個重寫operator函數的類。 例如:
// a predicate implemented as a function:
bool single_digit (const int& value) { return (value<10); }
// a predicate implemented as a class:
class is_odd
{
public:
bool operator() (const int& value) {return (value%2)==1; }
};
返回值:無
4、unique
原型:void unique ( );
template <class BinaryPredicate>
void unique ( BinaryPredicate binary_pred );按照規則binary_pred消除重復值。例如:
bool same_integral_part (double first, double second)
{ return ( int(first)==int(second) ); }
// a binary predicate implemented as a class:
class is_near
{
public:
bool operator() (double first, double second)
{ return (fabs(first-second)<5.0); }
};
調用:mylist.unique (same_integral_part);
mylist.unique (is_near());
功能:消除list中的重復元素
返回值:
5、merge
原型:void merge ( list<T,Allocator>& x );
template <class Compare>
void merge ( list<T,Allocator>& x, Compare comp );
功能:合並兩個已經有序(同時為升序或降序)的list。
merge()組合起兩個排好序的表。如果一個表未排序,merge()仍然能產生出一個表,其中包含著原來兩個表元素的並集。當然,對結果的排序就沒有任何保證了。向splice()函數一樣,merge()函數也不復制元素。
merge函數的作用是:將兩個有序的序列合並為一個有序的序列。函數參數:merge(first1,last1,first2,last2,result,compare);//firs1t為第一個容器的首迭代器,last1為第一個容器的末迭代器,first2為第二個容器的首迭代器,last2為容器的末迭代器,result為存放結果的容器,comapre為比較函數(可略寫,默認為合並為一個升序序列)。
返回值:
6、sort
原型:void sort ( );
template <class Compare>
void sort ( Compare comp );
功能:排序
返回值:
7、reverse
功能:將list中的元素逆置。
返回值: