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;
}
intmain()
; 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.包含 迭代器介面卡 運用繼承方式,實現適配功能,其實現與仿函式介面卡相...