lists將元素按順序儲存在鍊錶中. 與 向量(vectors)相比, 它允許快速的插入和刪除,但是隨機訪問卻比較慢.
stl中 end()指向的總是無效值,取值都用迭代器,用法跟指標差不多。
assign() 給list賦值
back() 返回最後乙個元素
begin() 返回指向第乙個元素的迭代器
clear() 刪除所有元素
empty() 如果list是空的則返回true
end() 返回末尾的迭代器
erase() 刪除乙個元素
front() 返回第乙個元素
get_allocator() 返回list的配置器
insert() 插入乙個元素到list中
max_size() 返回list能容納的最大元素數量
merge() 合併兩個list
pop_back() 刪除最後乙個元素
pop_front() 刪除第乙個元素
push_back() 在list的末尾新增乙個元素
push_front() 在list的頭部新增乙個元素
rbegin() 返回指向第乙個元素的逆向迭代器
remove() 從list刪除元素
remove_if() 按指定條件刪除元素
rend() 指向list末尾的逆向迭代器
resize() 改變list的大小
reverse() 把list的元素倒轉
size() 返回list中的元素個數
sort() 給list排序
splice() 合併兩個list
swap() 交換兩個list
unique() 刪除list中重複的元素
附list用法例項:
#include
#include
#include
#include
using namespace std;
//建立乙個list容器的例項listint
typedef listlistint;
//建立乙個list容器的例項listchar
typedef listlistchar;
void main(void)
cout << endl;
//輸出為 4 3 2 1
//使用stl的accumulate(累加)演算法
int result = accumulate(listone.begin(), listone.end(),0);
cout<<"sum="//--------------------------
//用list容器處理字元型資料
//--------------------------
//用listchar建立乙個名為listone的list物件
listchar listtwo;
//宣告i為迭代器
listchar::iterator j;
//從前面向listtwo容器中新增資料
listtwo.push_front ('a');
listtwo.push_front ('b');
//從後面向listtwo容器中新增資料
listtwo.push_back ('x');
listtwo.push_back ('y');
//從前向後顯示listtwo中的資料
cout<<"listtwo.begin()---listtwo.end():"cout << char(*j) << " ";
cout << endl;
//輸出為 b a x y
//使用stl的max_element演算法求listtwo中的最大元素並顯示
j=max_element(listtwo.begin(),listtwo.end());
cout << "the maximum element in listtwo is: "<}
//輸出為: the maximum element in listtwo is: y
#include
#include
using namespace std;
typedef listintlist;
//從前向後顯示list佇列的全部元素
void put_list(intlist list, char *name)
//測試list容器的功能
void main(void)
補充:stl標準函式find進行vector 、list鍊錶查詢
#include
#include
#include
using namespace std;
class example
bool operator==(example const & rhs)
private:
int i; };
int main(void)
#include
#include
#include
#include
using namespace std;
typedef listlistint;
int main(void) ;
listint ls1;
ls1.assign(a,a+5);
listint::iterator it;
for( it=ls1.begin(); it!=ls1.end(); it++)
cout<<*it<<" ";
coutls1.insert( ls1.end(), 4 );
for( it=ls1.begin(); it!=ls1.end(); it++)
cout<<*it<<" ";
coutls1.remove( 5 );
for( it=ls1.begin(); it!=ls1.end(); it++)
cout<<*it<<" ";
cout<}
//輸出 1 3 6 4 【5元素全部被刪除了】
/* 輸出如下
1 5 3 5 6
1 5 3 5 6 4
1 3 6 4 */
靜態成員 靜態成員函式
reference to non static member function must be called sort numbers.begin numbers.end cmp 做演算法題的時候遇到的乙個問題,和成員函式相關,這裡記錄一下備忘。首先上 class solution string p...
靜態成員和成員函式
靜態成員在類的所有物件中是共享的。如果不存在其他的初始化語句,在建立第乙個物件時,所有的靜態資料都會被初始化為零。我們不能把靜態成員的初始化放置在類的定義中,但是可以在類的外部通過使用範圍解析運算子 來重新宣告靜態變數從而對它進行初始化 靜態成員函式 如果把函式成員宣告為靜態的,就可以把函式與類的任...
成員函式 非成員函式和友元函式
成員函式和非成員函式最大的區別在於成員函式可以是虛擬的而非成員函式不行。所以,如果有個函式必須進行動態繫結,就要採用虛函式,而虛函式必定是某個類的成員函式。如果函式不必是虛擬的,情況就稍微複雜一點。看下面表示有理數的乙個類 class rational 這是乙個沒有一點用處的類 介面最小,但遠不夠完...