STL的組成
標准模板庫STL關注的重點是泛型數據結構和算法,其關鍵組成部分是容器(containers)、算法(algorithms)、迭代器(iterators)、函數對象(Function Object)、適配(Adaptor)。 本文地址:http://www.cnblogs.com/archimedes/p/Cpp-STL-Vector.html,轉載請注明源地址。 容器(containers):容器是數據在內存中組織的方法,例如,數組、堆棧、隊列、鏈表或二叉樹(不過這些都不是STL標准容器)。STL 中的容器是一種存儲T (Template)類型值的有限集合的數據結構, 容器的內部實現一般是類。這些值可以是對象本身,如果數據類型T代表的是Class的話。 算法(algorithms):算法是應用在容器上以各種方法處理其內容的行為或功能。例如,有對容器內容排序、復制、檢索和合並的算法。在STL中,算法是由模板函數表現的。這些函數不是容器類的成員函數。相反,它們是獨立的函數。它們不僅可以將其用於STL容器,而且可以用於普通的C++數組或任何其他應用程序指定的容器。 迭代器(iterators) :一旦選定一種容器類型和數據行為(算法),那麼剩下唯一要他做的就是用迭代器使其相互作用。可以把迭代器看作一個指向容器中元素的普通指針。可以如遞增一個指針那樣遞增迭代器,使其依次指向容器中每一個後繼的元素。迭代器是STL 的一個關鍵部分,因為它將算法和容器連在一起。 函數對象(Function Object):定義了函數調用操作符(operator())的類 適配器(adaptor):封裝一個部件以提供另外的接口(例如用list實現stack) 容器的分類:#include <cstring><vector><iostream> ar[] = { , , , , , , , , , * str = <> vec1(ar, ar + ); vector < > vec2(str, str + strlen(str)); cout << << (vector<>::const_iterator p = vec1.begin();p != vec1.end(); ++<< *<< << << (vector< >::const_iterator p1 = vec2.begin();p1 != vec2.end(); ++<< *<<頭文件 #include<vector> 定義變量 vector<int> myvec; 主要成員函數
#include <iostream><vector> <> INTVECTOR; main() { INTVECTOR vec1; INTVECTOR vec2(, ); INTVECTOR vec3(vec2.begin(), vec2.begin() + ); INTVECTOR::iterator i; cout << << endl; (i = vec1.begin(); i != vec1.end(); ++i) cout << *i << ; cout <<<< << endl; (i = vec2.begin(); i != vec2.end(); ++i) cout << *i << ; cout <<<< << endl; (i = vec3.begin(); i != vec3.end(); ++i) cout << *i << ; cout << vec1.push_back(); vec1.push_back(+ , ); vec1.insert(vec1.begin() + , vec3.begin(), vec3.end()); cout << << (i = vec1.begin(); i != vec1.end(); ++i) cout << *i << << vec2.assign(, ); cout << << (i = vec2.begin(); i != vec2.end(); ++<< *i << << cout << << vec1.front() << endl; cout << << vec1.back() << endl; cout << << vec1.at() << endl; cout << << vec1[] << vec1.pop_back(); vec1.erase(vec1.begin() + , vec1.end() - ); cout << << (i = vec1.begin(); i != vec1.end(); ++<< *i << << cout << << vec1.size() << endl; cout << << vec1.empty() << endl;