c++STL
STL概念
STL,英文全稱 standard template library,中文可譯為標準模板庫或者泛型庫,其包含有大量的模板類和模板函數,是 C++ 提供的一個基礎模板的集合,用于完成諸如輸入/輸出、數學計算等功能。
stl六大組件
STL提供了六大組件,彼此之間可以組合套用,這六大組件分別是:容器、算法、迭代器、仿函數、適配器(配接器)、空間配置器。 容器:各種數據結構,如vector、list、deque、set、map等,用來存放數據,從實現角度來看,STL容器是一種class template。 算法:各種常用的算法,如sort、find、copy、for_each。從實現的角度來看,STL算法是一種function tempalte. 迭代器:扮演了容器與算法之間的膠合劑,共有五種類型,從實現角度來看,迭代器是一種將operator* , operator-> , operator++,operator–等指針相關操作予以\
重載的class template. 所有STL容器都附帶有自己專屬的迭代器,只有容器的設計者才知道如何遍歷自己的元素。原生指針(native pointer)也是一種迭代器。 仿函數:行為類似函數,可作為算法的某種策略。從實現角度來看,仿函數是一種重載了operator()的class 或者class template 適配器:一種用來修飾容器或者仿函數或迭代器接口的東西。 空間配置器:負責空間的配置與管理。從實現角度看,配置器是一個實現了動態空間配置、空間管理、空間釋放的class tempalte. STL六大組件的交互關系,容器通過空間配置器取得數據存儲空間,算法通過迭代器存儲容器中的內容,仿函數可以協助算法完成不同的策略的變化,適配器可以修飾仿函數。
Vector容器向量容器(一個 C++ 標準的模板),它與數組十分相似,唯一不同的是,向量在需要擴展大小的時候,會自動處理它自己的存儲需求:#創建一個向量存儲
int vector<int> vec;
#顯示 vec 的原始大小
cout << "vector size = " << vec.size() << endl;
#推入 5 個值到向量中
for(i = 0; i < 5; i++){ vec.push_back(i); }
#訪問向量中的 5 個值
for(i = 0; i < 5; i++){ cout << "value of vec" << i << vec[i] << endl; }
#使用迭代器 iterator 訪問值
vector<int>::iterator v = vec.begin(); while( v != vec.end()) { cout << "value of v = " << *v << endl; v++; }

浙公網安備 33010602011771號