是乙個線性鍊錶結構,它的資料由若干個節點構成,每乙個節點都包括乙個資訊塊(即實際儲存的資料)、乙個前驅指標和乙個後驅指標。它無需分配指定的記憶體大小且可以任意伸縮,這是因為它儲存在非連續的記憶體空間中,並且由指標將有序的元素鏈結起來。由於其結構的原因,list 隨機檢索的效能非常的不好,因為它不像vector 那樣直接找到元素的位址,而是要從頭乙個乙個的順序查詢,這樣目標元素越靠後,它的檢索時間就越長。檢索時間與目標元素的位置成正比。雖然隨機檢索的速度不夠快,但是它可以迅速地在任何節點進行插入和刪除操作。因為list 的每個節點儲存著它在鍊錶中的位置,插入或刪除乙個元素僅對最多三個元素有所影響,不像vector 會對操作點之後的所有元素的儲存位址都有所影響,這一點是vector 不可比擬的。
(1) 不使用連續的記憶體空間這樣可以隨意地進行動態操作;
(2) 可以在內部任何位置快速地插入或刪除,當然也可以在兩端進行push和pop 。
(3) 不能進行內部的隨機訪問,即不支援[ ] 操作符和vector.at() ;
lists將元素按順序儲存在鍊錶中,與向量(vectors)相比,它允許快速的插入和刪除,但是隨機訪問卻比較慢.
4.clear() 刪除所有元素
5.empty() 如果list是空的則返回true
6.end() 返回末尾的迭代器
7.erase() 刪除乙個元素
語法:
iterator erase( iterator loc );//刪除loc處的元素
iterator erase( iterator start, iterator end ); //刪除start和end之間的元素
8.front() 返回第乙個元素的引用
9.get_allocator() 返回list的配置器
10.insert() 插入乙個元素到list中
語法:
iterator insert( iterator loc, const type &val );
//在指定位置loc前插入值為val的元素,返回指向這個元素的迭代器,
void insert( iterator loc, size_type num, const type &val );
//定位置loc前插入num個值為val的元素
void insert( iterator loc, input_iterator start, input_iterator end );
//在指定位置loc前插入區間[start, end)的所有元素
11.max_size() 返回list能容納的最大元素數量
12.merge() 合併兩個list
語法: 6
void merge( list &lst);//把自己和lst鍊錶連線在一起
void merge( list &lst, comp compfunction );
//指定compfunction,則將指定函式作為比較的依據。
13.pop_back() 刪除最後乙個元素
14.pop_front() 刪除第乙個元素
15.push_back() 在list的末尾新增乙個元素
16.push_front() 在list的頭部新增乙個元素
17.rbegin() 返回指向第乙個元素的逆向迭代器
18.remove() 從list刪除元素
語法:
void remove( const type &val );
//刪除鍊錶中所有值為val的元素
19.remove_if() 按指定條件刪除元素
20.rend() 指向list末尾的逆向迭代器
21.resize() 改變list的大小
語法:
void resize( size_type num, type val );
//把list的大小改變到num。被加入的多餘的元素都被賦值為val22.
22.reverse() 把list的元素倒轉
23.size() 返回list中的元素個數
24.sort() 給list排序
語法:
void sort();//為鍊錶排序,預設是公升序
void sort( comp compfunction );//採用指定函式compfunction來判定兩個元素的大小。
25.splice() 合併兩個list
語法:
void splice( iterator pos, list &lst );//把lst連線到pos的位置
void splice( iterator pos, list &lst, iterator del );//插入lst中del所指元素到現鍊錶的pos上
void splice( iterator pos, list &lst, iterator start, iterator end );//用start和end指定範圍。
26.swap() 交換兩個list
語法:
void swap( list &lst );// 交換lst和現煉表中的元素
27.unique() 刪除list中重複的元素
語法:
void unique();//刪除鍊錶中所有重複的元素
void unique( binpred pr );// 指定pr,則使用pr來判定是否刪除。
當然這個裡邊有很多函式都有需要注意的地方,比如:
#include
#include
using namespace std;
int main()
你認為結果會是多少呢?
我對區塊鏈的一些看法
唐墨 1650727278 qq.com 同步資料定時定量同步,確保賬簿的一致性。以最長鏈作為主鏈,即每個節點總是選擇並嘗試延長主鏈。pow 確保整個區塊鏈的時序性。以太坊有專用pos的呼聲 一次交易中,pow勝出的一方獲得寫入區塊的許可權 同時獲得一定的激勵值,以確保區塊鏈在利益驅動型階段的秩序執...
我對web2 0的一些看法
我認為,web2.0實際上就是乙個虛擬圈子.在現實生活中,人們總是生活在乙個圈子中,而且都比較固定,這些主要有 親友圈同事圈 合作夥伴的圈子 而在虛擬世界裡,人們也主要形成了一些圈子 如 聊友圈,以im聊天形成的 論壇 部落格形成專業興趣圈.這些圈子的目的主要有學習,娛樂,交換觀點,相互串聯等作用....
對 XML 的一些看法
xml已經廣泛的應用在文件處理,資料儲存,web應用 例如ajax 的資料傳輸,模版的應用 等方面。作為一種結構化的語言,它克服了一般的標記語言標記固定的缺點,你可以定義自己的標記,按照自己的意願組織資料。你可以定義dtd跟xml schema來確保xml文件是符合要求的。可以用xslt把xml文件...