日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STL体系结构

發布時間:2025/3/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STL体系结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

六大部件

1.容器
我們常常說程序=數據結構+算法,其實容器就是數據結構,常用的容器有sequence containers:array,vector,list,deque,還有associative container:set,map等。每個容器在使用之前都請添加頭文件,在定義時的語言風格有點類似模板,因為STL的底層實現與c++的泛型編程息息相關,關于具體的用法可以參考cplusplus.com中的rederence或者其他網站去。

2.算法
STL針對每個容器有非常多對應的算法,如與排序查找有關的快速排序,二分查找等都有,可以直接調用。很奇怪的一點是c++面向對象的思想在這里幾乎被遺棄了,我們常常把數據和函數封裝到一個類里面,但在這里算法和容器分開了。

3.迭代器
如上圖所示迭代器是算法操縱容器的手段,有點像指針,當然也能完全這樣理解,用*號解引用后能直接得到具體的數據,也能完成指針的幾乎所有的操作如++等。

4.分配器
用來分配管理內存空間,可以想象成是一個內存池,在使用容器時,我們可以對內存空間進行動態分配,當然如果我們不使用容器時分配內存用new和malloc就可以了,allocator在使用上面還是過于麻煩了要先allocate(給予對象個數)然后還要construct,destroy,deallocate。我們在使用容器時也往往使用默認的分配(容器模板第二個參數),比如vector,應該沒有人會寫vector<int,allocator>吧,不會吧不會吧(doge)。

5.仿函數
仿函數,仿函數,就是很像函數的一個東西,我們平常在使用時直接當成內置函數用就好,STL為我們提供了豐富的仿函數plus,minus,for_each,multiplies,divides,modulus,equal_to,not_equal_to,greater等等,但其實它并不是一個函數而是一個重載了()的一個類

6.適配器(容器,仿函數)
”適配器是使一種事物的行為類似于另外一種事物行為的一種機制”這句話非常常見,我的理解是它可以對容器或者仿函數進行包裝使它表現出其他的功能,下面會給例子。容器適配器有queue,priority_queue,stack。

總結

最后以侯捷先生的一個例子來結束——

#include<vector> #include<algorithm> #include<functional> #include<iostream> using namespace stdint main() {int ia[6]={1,2,3,4,5,6};//容器初始化vector<int,allocator<int>> vi(ia,ia+6);//count_if是算法,vi.begin()是迭代器,not1,bind2nd是適配器,less是仿函數//功能是統計大于4的數量cout<<count_if(vi.begin(),vi.end(),not1(bind2nd(less<int>(),4)));return 0;

總結

以上是生活随笔為你收集整理的STL体系结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。