STL標準庫 容器 forward list

2021-10-01 17:45:58 字數 3960 閱讀 4546

forward_list即單向list,功能少額外開銷就小.而且只能在前段插入元素

結構如下

一 定義

#include

int main(int argc, const

char *ar**)

return0;

}

二 與迭代器的使用

由於forward_list的迭代器內指向記憶體不連續 顧不能做迭代器 "+", "-" 操作

int

main()

;

//返回迭代器開始之前的位置

l.before_begin();

//返回第乙個元素位址

l.begin();

//返回最後乙個元素的下乙個位置

l.end();

//返回迭代器開始之前的位置

l.cbefore_begin();

//返回第乙個元素位址

l.cbegin();

//返回最後乙個元素的下乙個位置

l.cend();

return0;

}

三 容量

int

main()

;

//返回forward_list是否為空

cout << l.empty() <

//forward_list的最大容量

cout << l.max_size() <

return0;

}

四 元素訪問

int

main()

;

//返回第乙個元素

cout<< l.front() <

return0;

}

五 操作

int

main()

; iterator

int>, int>i;

for(auto i : l)

cout

<

初始化"

<

//給l賦值成10個1

l.assign(10, 1

);

for(auto i : l)

cout

<

assign()

"<

//前段插入0

l.push_front(0

);

for(auto i : l)

cout

<

push_front()

"<

//在頭部插入一組 引數為emplace_front(initializer_list<>) 初始化1

l.emplace_front(1

);

for(auto i : l)

cout

<

emplace_front()

"<

//彈出第乙個元素

l.pop_front();

for(auto i : l)

cout

<

pop_front()

"<

//在指定位置後面插入一組資料

l.emplace_after(l.begin(), 0

);

for(auto i : l)

cout

<

emplace_after()

"<

//在指定位置後面插入一組資料

l.insert_after(l.begin(), 0

);

for(auto i : l)

cout

<

insert_after()

"<

//在指定位置之後插入元素

l.insert_after(l.begin(), 11

);

for(auto i : l)

cout

<

insert_after()

"<

//刪除指定位置

l.erase_after(l.begin(),l.end());

for(auto i : l)

cout

<

erase_after()

"<

//交換並釋l2

forward_list l2 = ;

l.swap(l2);

for(auto i : l)

cout

<

swap()

"<

//重新設定記憶體,不足補齊, 超過彈出尾部

l.resize(5,20

);

for(auto i : l)

cout

<

resize()

"<

//清空

l.clear();

for(auto i : l)

cout

<

clear()

"<

return0;

}

六 修改操作

int

main()

; forward_list

l1 = ;

l.splice_after(l.before_begin(), l1);

for(auto i : l)

cout

<

splice_after()

"<

//刪除指定元素

l.remove(10

);

for(auto i : l)

cout

<

remove()

"<

//按指定條件刪除

l.remove_if((int x));

for(auto i : l)

cout

<

remove_if()

"<

//排序 <

l.sort();

for(auto i : l)

cout

<

sort(

"<

l.sort((

int first, int second));

for(auto i : l)

cout

<

sort(>)

"<

//刪除重複元素

l.unique();

for(auto i : l)

cout

<

unique()

"<

forward_list

l2 = ;

//按指定要求刪除元素(排序後)

l2.unique((int x, int y) );

for(auto i : l2)

cout

<

unique()

"<

forward_list

l3 = ;

forward_list

l4 = ;

//合併兩個有序forward_list 合併後仍然有序

l3.merge(l4);

for(auto i : l3)

cout

<

merge()

"<

//翻轉

l3.reverse();

for(auto i : l3)

cout

<

reverse()

"<

//交換 多退少補 並釋放l

l3.swap(l);

for(auto i : l3)

cout

<

reverse()

"<

return0;

}

STL標準庫 容器 unordered set

unordered set與與unordered map相似,這次主要介紹unordered set unordered set它的實現基於hashtable,它的結構圖仍然可以用下圖表示,這時的空白格不在是單個value,而是set中的key與value的資料報 有unordered set就一定...

STL標準庫 容器介面卡

上一節介紹了仿函式介面卡,這節主要介紹容器介面卡和迭代器介面卡的概念,其實容器介面卡和迭代器其介面卡就是封裝了一些其他class的方法,非常好理解.如果你想讓乙個calss擁有另乙個class的功能,你都可以這樣做 1.繼承 2.包含 迭代器介面卡 運用繼承方式,實現適配功能,其實現與仿函式介面卡相...

STL標準庫 容器介面卡

上一節介紹了仿函式介面卡,這節主要介紹容器介面卡和迭代器介面卡的概念,其實容器介面卡和迭代器其介面卡就是封裝了一些其他class的方法,非常好理解.如果你想讓乙個calss擁有另乙個class的功能,你都可以這樣做 1.繼承 2.包含 迭代器介面卡 運用繼承方式,實現適配功能,其實現與仿函式介面卡相...