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 list
listint;
//建立乙個list容器的例項listchar
typedef list
listchar;
void main(void
) cout
/輸出為 4 3 2 1
//使用stl的accumulate(累加)演算法
int result = accumulate(listone.begin(), listone.end(),0
); cout
<<"
sum=
"cout
<<"
------------------
"/輸出為 sum=10
//--------------------------
//用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
/輸出為 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 list
intlist;
//從前向後顯示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 list
listint;
int main(void);
listint ls1;
ls1.assign(a,a+5
); listint::iterator it;
for( it=ls1.begin(); it!=ls1.end(); it++)
cout
<<*it<<"";
cout
/輸出 1 5 3 5 6
ls1.insert( ls1.end(), 4);
for( it=ls1.begin(); it!=ls1.end(); it++)
cout
<<*it<<"";
cout
/輸出 1 5 3 5 6 4
ls1.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
*/
golang標準庫 雙向鍊錶(list)
鍊錶結構大家都不陌生了,與陣列一樣都是儲存資料用的,形成互補。鍊錶增刪快,查詢慢,陣列查詢快,增刪慢 兩者各有各的應用場景。go語言標準庫中實現了雙向鍊錶和環形鍊錶兩種鍊錶結構 雙向鍊錶位於go標準庫 container list type list structroot 為鍊錶的根元素,len為鍊...
尋找單向鍊錶中含有環的入口節點
這是乙個比較基本的鍊錶問題。總結一下,可以擴充套件為以下幾類問題 解法 具體 如下 定義listnode資料結構 public class listnode 判斷單向鍊錶是否有環 param phead return public boolean hasloopinlistnode listnode...
C 標準類庫中的list
lists將元素按順序儲存在鍊錶中.與 向量 vectors 相比,它允許快速的插入和刪除,但是隨機訪問卻比較慢.stl中 end 指向的總是無效值,取值都用迭代器,用法跟指標差不多。assign 給list賦值 back 返回最後乙個元素 begin 返回指向第乙個元素的迭代器 clear 刪除所...