第5章 stl標準模板庫
5.1 stl中的各個元件
stl的基本觀念就是將資料和操作分離。而這種將資料和演算法分開對待的考慮和物件導向的思想是矛盾的。
5.2 容器
序列容器sequence containers和關聯式容器assocative containers
嚴格來說,c++標準並未定義某一種容器的具體實現,然而標準卻規定了對其行為和複雜度的要求,這讓庫的作者沒有太多變化的餘地。所以實際上各個實際版本之間只是在細節上有所差異。
stl中的插入迭代器
測試三種迭代器的**:
#include#include
#include
#include
#include
#include
#include
#include
using
namespace std;
int main()
逆向迭代器
這個在進行反轉容器的時候很常用。
5.6.2 更易型演算法與關聯容器
5.6.3 演算法與成員函式的效率
#include
#include
#include
using
namespace std;
int main()
//remove all elements with value 3
//- poor performance
coll.erase (remove(coll.begin(),coll.end(),
3),coll.end());
//remove all elements with value 4
//- good performance
coll.remove (4);
}5.8.2 判別式predicates
5.9 仿函式functor,函式物件function object
5. 11. 1 stl中的錯誤處理
stl強調的是效率,所以很少進行錯誤檢查。
5.12 擴充套件的stl
第6章 stl容器
普通的陣列也可以作為stl容器來使用,下面是一種對stl的包裝:#include
#include
#include
#include
#include
template
class carray
const_iterator bgein()const
iterator end()
const_iterator end()const
reference operator(std::size_t i)
const_reference operator(std::size_t i)const
size_type size()const
size_type max_size()const
t* as_array()
};int main()
copy(a.begin(),a.end(),ostream_iterator(cout,"
"));
cout(cout,"
"));
cout<6.7.3 hash table 雜湊表
第7章 stl迭代器
ostream迭代器的操作
istream迭代器操作
7.5 迭代器特性
《C 標準程式庫》讀書筆記
泛型 why泛型 為了讓庫更一般化。比如find,可以將三樣東西都引數化 1 查詢物件的型別 2 該物件在資料結構中的組織方式 3 滿足某某條件地查詢 仿函式p127,294 what仿函式 定義了operator 的物件 why仿函式 1 使泛型演算法更一般化 2 仿函式有自己的獨特狀態 仿函式可...
《C 標準程式庫》讀書筆記(一)
1,很多編譯器都要求模板的定義和實現都在標頭檔案中,這是因為必須先為他提供某個實現品,然後才能呼叫,也只有如此才能通過編譯。目前唯一能讓 template 的運用 具有可移植性的方式,就是在標頭檔案中以 inline function 實現temlate function。2,下面typename ...
《C 標準程式庫》讀書筆記(一)
1,很多編譯器都要求模板的定義和實現都在標頭檔案中,這是因為必須先為他提供某個實現品,然後才能呼叫,也只有如此才能通過編譯。目前唯一能讓 template的運用 具有可移植性的方式,就是在標頭檔案中以inline function實現temlate function。2,下面typename指出su...