讀書筆記之 C 標準程式庫 2

2022-05-13 15:05:10 字數 1754 閱讀 6476

第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...