《C Primer》學習筆記(11 12章)

2021-06-25 14:12:09 字數 2642 閱讀 5972



1.   size_t 

back_inserter

2.   提到的演算法

find(vec.begin(), vec.end(), ival);

find_first_of(vec1.begin(), vec1.end(),vec2.begin(),vec2.end());

accumulate(vec.begin(), vec.end(), ival); // 第三個實參提供累加初始值和關聯的型別

//寫入運算不檢查目標的大小是否滿足寫入的數目

fill(vec.begin(), vec.end(), 0); //  是寫入安全的

fill_n(vec.begin(), 2, 0); // 前兩個元素賦為0 ,必須保證vec至少有2個元素,否則執行錯

fill_n(back_inserter(vec),2, 0); // 相當於在vec後面push_back兩個0

back_inserter是迭代器介面卡

copy(ilst.begin(), ilst.end(),back_inserter(ivec));

replace(ilst.begin(), ilst.end(), 0, 42); // 等於0的元素換成42

replace_copy(ilst.begin(), ilst.end(),back_inserter(vec), 0, 42); // ilst不變,複製到vec中,其中0換成42

sort(vec.begin(), vec.end());

vector::iterator end_unique = unique(words.begin(),word.end()); // 把重複單詞移動到後面去,返回無復下一位置

演算法不改變容器大小,要刪掉重複元素必須使用容器操作 words.erase(end_unique,words.end());

count_if(words.begin(), words.end(), gt6); //函式要求謂詞函式只能乙個引數,即迭代器範圍內的元素

stable_sort(words.begin(), words.end(),isshorter);

以上四五行參考**test統計六個及以上字母組成的單詞.cpp

3.   front_inserter使用push_front,這個演算法不能用在vector上,它沒有這個操作

inserter(ilst, it); //指定插入位置, 在it之前插

注意:copy(ilst.begin(), ilst.end(), inserter(ilst2,ilst2.begin()));//正序插入

//每次都在固定位置插入

copy(ilst.begin(),ilst.end(), front_inserter(ilst1));//逆序插入

4.   d

list ilst;

for (inti=0; i<5; ++i)

ilst.sort();

printlist(ilst);

ilst.unique(); //

刪掉,而不是後移重複元素

,這不是演算法函式,所以真正修改了基礎容器

// 真正修改基礎容器的還有remove,演算法函式中

remove

是把等於指定值的元素們

// 前移,返回第乙個不等於

val的元素的位置

printlist(ilst); 

5.    

6.   『

1.   非static成員函式有this.  const必須同時出現在定義和宣告中,不然出錯

2.   只有類中有很少的方法且有公有資料時,使用struct,或只有公有資料時。

3.   封裝好處:一,防止使用者級破壞,二,只要介面不變,不須改動使用者級**。 cpp檔案才是類定義檔案

4.   前向宣告是不完全型別,只能用於定義指標或引用(只是定義,不能使用它們來訪問成員),或宣告使用該型別作為形參或返回值的函式。 可以定義該型別的static物件

5.   this的型別是乙個指向類型別的const指標。

const成員函式只能返回*this作為乙個const引用:對於返回*this或this的函式,const若有則必同時有

const dog* run1() const // const成員函式中,this是指向const物件的const指標,函式返回型別必須是const的

const dog& run2() const // const成員函式中,*this是const物件,返回值只能是乙個const的引用

6.   基於成員函式是否const可以過載,基於形參是否指向const物件可以過載。const物件使用const成員。

7.   可變資料成員mutable,這樣const成員函式可以改變它或它是const物件的成員時也可改

8.   形參表和函式體處於類作用域中

char screen::get(indexr, index c) const 的方式初始化

struct data ;

11.  友元可以是非成員函式,可以是已知類的成員函式,也可以是類

12.  若要將成員函式定義為inline,則宣告的時候可以不必寫inline,它是用於定義的關鍵字。定義為inline

學習筆記 專題1 1 1 2

專題1 1 matlab系統環境 當命令語句一行寫不下時,可用 作為續行符 clear命令,可清除工作區的所有變數,用clc命令時可以清除介面的所有內容 新建乙個資料夾的方法 cd c lxdm 按enter鍵即可 當變數名與系統函式相同時,優先呼叫的是變數。如 設定檔案搜素路徑 1 2 matla...

C Primer學習筆記

學習完乙個知識點後寫上自己的理解。算是總結吧,加深一下自己的印象,也可以在以後複習的時候方便檢視 加油加油!14.1關於運算子的過載 存在的意義 目前看來就是因為操作符大部分是針對資料的,比如int型,char型,書中稱為內建型別。而當類之間想要用操作符的時候,比如兩個類的物件相加,那麼就需要去重 ...

《C Primer》學習筆記

2008年7月18日 颱風海鷗登陸 1 宣告與定義 變數的定義用於為變數分配儲存空間,還可以為變數指定初始值。在乙個程式中,變數有且僅有乙個定義。變數的宣告用於向程式表明變數的型別和名字。變數的宣告包括物件名 物件型別和物件型別前的關鍵字extern 當設計標頭檔案時,記住定義和宣告的區別是很重要的...