紫書知識點記錄(持續更新)

2021-10-05 11:58:28 字數 1733 閱讀 1663

開一篇帖子記錄一下看書時覺得重要的知識點吧,想起來的話就加進來,總比沒有強…

「一等公民」指既可以作為引數傳遞,又可以從子程式中返回,還可以直接賦給它變數的型別,「二等公民」指盡可以作為引數傳遞的型別,「三等公民」指三者都做不到的型別。

getchar()可用來讀取包含空格、換行符的字串。

乘以2也可以寫成「<<1」,意思是左移一位。(感覺有點複雜,還沒掌握)

回車換行符:linux系統中為"\n",macos中為"\r",windows中兩者都有。

「&「得到的是物件的位址,所以」*」+"&"得到的是物件的值。

string型別的常用函式:strcmp:字串比較;strcpy:設定字串的值;strcat:字串相加。

isalpha是乙個巨集定義,包含於標頭檔案中,用來判斷物件是否為乙個字母。類似的還有isalnum等。

algorithm標頭檔案中的sort可以給任意物件排序,包括內建型別和自定義型別,前提是型別定義了「<」運算子。排序之後可以用lower_bound(x)查詢大於或等於x的第乙個位置。待排序/查詢的元素可以放在陣列裡,也可以放在vector裡。(《演算法設計入門經典》)

vector,向量,可以稱之為動態陣列,它是乙個不定長度的陣列,也是乙個模板類。(按照陣列來理解的話會比較簡單,之前一直搞不懂)

模板是c++泛型程式設計的基礎,可以按照字面意思理解它的用處。我還沒有深入地了解,所以只記錄一些基礎知識:模板有結構體模板,函式模板和類模板。舉個例子來說明它的結構:

template

<

typename t>

t sum

(t* begin,t*end)

sstream標頭檔案可以把string作為流進行讀寫。這部分沒太搞懂。理解的部分是:getline(cin,line)從流中讀入一行資料並存到string型別的line中。對於stringstream ss(line),我的理解是建立乙個字串流ss用以讀取字串line的內容,我是把它看做預設建構函式來使用的。建立好後ss就和cin用法相同了。

假設向量a中存放著許多單詞,sort(a.begin,a.end)可以做到對a中元素按照字典序排列。

tolower( c):若c有對應的小寫字母,則返回該小寫字母,否則返回c本身。

兩個容器:set(集合)和map(對映),這部分還需要查閱資料細緻地學習。

set::count(x)用來在容器中搜尋鍵為x的元素,並返回元素在容器**現的次數。但是因為set容器不允許重複的鍵,這意味著如果找到元素,函式實際上返回1,否則返回0。map::count(x)同理。

set_union()和set_intersection()均為函式模板,分別實現了集合的並集、交集的運算。

inserter(c,i)是為容器c和迭代器i構造std::insert.iterator的便利函式模板。(我的理解是建立乙個迭代器用以指向容器c的i位置)

函式substr(start,len)返回從start開始,長度為len的子串,也就是擷取呼叫者的一部分。如果沒有len引數,則返回start之後的所有部分。

可以使用auto遍歷字串、陣列、stl容器等,形式簡潔。示例**如下(取自uva12504):

for

(auto

& p : s)

if(p ==

''|| p ==

','|| p ==

':')

//遍歷字串s並將其中的符號變為空格

p =' ';

知識點記錄(持續)

1.鍵盤輸入scanner sc new scanner system.in int i sc.nextint system.out.println i 2.三元符int a 10 int b 20 int max a b a b 3.switch 關係表示式 注意 關係表示式的取值可以是byte ...

知識點(筆記,持續更新)

一 常用標頭檔案 1 include c 演算法庫 algorithms library 為 c 程式提供了大量可以用來對容器及其它序列進行演算法操作的函式。這些元件可以為函式或函式模板,大部份由標頭檔案 提供。2 向量 vector 是一種物件實體,能夠容納許多其他型別相同的元素,因此又被稱為容器...

web小知識點 持續更新

css修改tr的邊框 如果直接修改tr的border屬性是沒有反應的 需要在table中加一句話 table js獲取dom節點 childnodes 得到s的全部子節點 parentnode 得到s的父節點 nextsbiling 獲得s的下乙個兄弟節點 previoussbiling 得到s的上...