讀書筆記之:C++ Primer (第4版)及習題(ch01-ch11) [++++]

来源:http://www.cnblogs.com/wohenben/archive/2016/04/20/5413206.html
-Advertisement-
Play Games

讀書筆記之:C++ Primer (第4版)及習題(ch01-ch11) [++++] 第2章 數據和基本類型 1. 整型 2. 習題:左值和右值 3. C++關鍵字/保留字和操作符替代值 4. 聲明,定義, 初始化和賦值是不同的概念。 聲明是說明一個變數的存在,不會為變數進行記憶體空間的分配。 定義 ...


讀書筆記之:C++ Primer (第4版)及習題(ch01-ch11) [++++]

第2章 數據和基本類型

1. 整型

2. 習題:左值和右值

3. C++關鍵字/保留字和操作符替代值

4. 聲明,定義, 初始化和賦值是不同的概念。

聲明是說明一個變數的存在,不會為變數進行記憶體空間的分配。

定義是說明一個變數的存在,同時為這個變數分配對應的記憶體空間。

初始化就是在進行變數定義的時候在所分配的記憶體空間中同時填入有意義的值。如果不進行初始化的話,變數雖然有對應的記憶體空間,但是記憶體空間中對應 的內容卻是無意義的。

賦值是為已經存在的變數的改寫值,也就是重新擦寫變數記憶體空間的數據,填入新的數據。

C++中因為有類的存在所以,對初始化進行了更細的劃分,分為直接初始化和複製初始化。

C++對於變數的初始化規定了一些規則:內置類型和類類型是不一樣的,內置類型在函數體外自動初始化為0,函數體內不進行初始化。而類類型的話是調用類的預設構造函數。

5. const變數/對象的初始化

6. 引用聲明後就必須初始化,並且一經初始化就不能再改變。

不能使用const變數來初始化非const引用。

7. 定義變數和定義類成員變數是不一樣的。

 

第3章 標準庫類型

1.string對象的讀寫

下麵的代碼可以從輸入不斷的讀入單詞。

複製代碼 int main(){
string word;
while(cin>>word)
cout<<word<<endl;

} 複製代碼

上面的程式的大致輸出是這樣的:

如果從標準輸入讀入的話,產生的結果是這樣的:每次按回車鍵之後才產生輸出。主要cin是從緩衝區讀取輸入的,只有每次按下回車鍵的時候才將緩衝區進行刷新。

如果是使用管道來進行輸入的話,結果是這樣的

可以看到單詞是通過空白符(空格,回車,製表符)進行劃分的。而結束是根據文件結束符進行判斷的。

getline的使用方法如下:

複製代碼 int main(){
string line;
while(getline(cin,line))
cout<<line<<endl;
} 複製代碼

 

8. bitset類型

 

第4章 數組和指針

1. 指針與引用

2. 動態數組的初始化

 

第5章 表達式

1. C++中前置操作符還是後置操作符

2. 動態創建對象時的預設初始化。

3. 刪除const對象,使用delete來收回記憶體

4. C++中的類型轉換

 

第6章 語句

1. 標準庫異常

第7章 函數

1. 形參與實參:形參是變數,實參是表達式。

2. const形參

對於C++內置類型,由於採用的是值複製的方式,所以加const與否都是無影響的。

如果形參是引用的形式,採用const和非const的情況就不一樣了。

3. const成員函數

4. 構造函數

預設構造函數,構造函數的初始化列表

5. 實參類型的轉換

C++支持函數重載,所以就存在函數的匹配問題。在進行函數匹配的過程中,如果沒有找到最佳匹配的話,需要進行實參類型的轉換來尋找次優的匹配。

6. const參數與重載

7. 習題,枚舉類型對象只能用同一枚舉類型的另一對象或一個枚舉成員進行初始化。

8. const引用形參

下麵的函數是錯誤的

void swap(const int &a,const int &b){

int tmp=a;

a=b;

b=a;

}

const在此處的用法就是防止對傳入形參的修改。

 

下麵的函數也是錯誤的:

void swap(const int *a,const int *b){

int tmp=*a;

*a=*b;

*b=tmp;

}

const的作用就是說明指針指向的地方是只讀的,不允許修改。

 

9.C++中函數指針的不同寫法

函數重載存在時,必須對函數指針進行精確的匹配

 

第8章 標準IO庫

1. IO流類的繼承關係以及所在的頭文件

2. IO對象不可複製或賦值

3. C++中的IO流的最大的特點就是有流的狀態,可以通過判斷流的狀態

 

4. 文件流對象的使用

 

 

第9章 順序容器

1. 順序容器中定義的類型

2. swap操作節省刪除元素的成本

3. vector容器的自增長

5. string中的substr,append和replace操作

 

6. string類型的操作操作,這個其實挺重要的,可以藉助這個類find操作完成很多工作。

 

下麵是string幾個查找函數的例子:

View Code

View Code

下麵的程式不嚴格的事這個習題的程式,該程式只是找到一個個的單詞。

View Code

第10章 關聯容器

1.STL中的關聯容器

在C++11中添加了unordered_map,unordered_set,unordered_multimap,unordered_multiset. 這四個容器其實就是常見的hash_map,hash_set, hash_multimap, hash_multiset

2. pair類型

  3. map容器定義的類型

對map迭代器進行解引用得到的是pair類型

4. map下標訪問的特殊之處

5. map的insert操作

統計單詞數目的一個簡單程式:

View Code

6. map中的查找操作:count和find函數

7. 一個簡單的單詞轉換程式

View Code

運行結果如下:

8. map,set,list差異

9. set的定義與使用

10. 利用set來排除一些常見的單詞,這樣在統計的時候就避開了常見的單詞

View Code

11. 容器的綜合應用:文本查詢程式

View Code

以該程式源文件為輸入的話,有下麵的輸出:

12. 常見常用容器總結

第11章 泛型演算法

1. 插入迭代器

2. iostream迭代器

3. 使用copy演算法將文件寫入到輸出:

View Code

4. 三種迭代器

5. 迭代器分類

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • WebService訪問oracle資料庫本地調試 一步一個坑 上篇文章提到我們額資料庫掛了,重裝了資料庫,然後呢我需要在本地調試WebService,看看那些數據結構缺失,遷移到新資料庫中去。踩坑之路正式開始,當然這不是WebService這個項目埋下的坑,應該是每個使用oracle開發WebSe ...
  • 今天看了下C#創建自定義控制項的東西,就創建了一個自定義的控制項,但在控制項庫編譯完後來測試控制項時發現在ToolBox面找不到自定義的這個控制項,把控制項dll導入後還是找不到,最好網上查資料發現是因為VS配置的一個選項沒開, Tools-》Options-》Windows Forms Designer-》G ...
  • 1.攝像機的跟隨運動,邏輯就是保持攝像機跟主角的距離不變(Undate()函數)。 offset=trandform.position-player.position. Undate() { transform.position=player.position+offset; } 2.控制物體的移動 ...
  • windows上安裝mongodb的php擴展 下載地址https://s3.amazonaws.com/drivers.mongodb.org/php/index.html 找到對應的php版本的dll文件,下載php_mongo.dll,放到php安裝目錄下的ext目錄中,修改php.ini,添 ...
  • 引言 最經看cloud wind 的 skynet伺服器設計. 覺得特別精妙. 想來個專題先剖析其通信層伺服器內核 的設計原理. 最後再優化.本文是這個小專題的第一部分, 重點會講解對於不同平臺通信基礎的介面封裝. linux是epoll, unix是 kqueue. 沒有封裝window上的ioc ...
  • 沒有經過處理的稀疏矩陣其實就是一個特殊的二維數組,數組中的大部分元素是0或者其他類型的非法值,只有少數幾個非零元素。 為了實現壓縮存儲,可以只存儲稀疏矩陣的非0元素。在存儲稀疏矩陣中的非0元素時,必須要存儲該元素的行列號以及元素值。 我們可以封裝一個三元組類來存儲這些元素。 創建稀疏矩陣。利用容器, ...
  • 剛學到數組和指針一章(未涉及字元串) 對於一維數組來說: int i, a[10]; 可以直接用*( a+i)來訪問數據,與a[i]相同。 對於多維數據: int i ,*p,a[2][3][4]; 無法用a+i來直接訪問數據,*(a+i)==**(a+i)==&a[i][0][0] ==&a[i] ...
  • FFMPEG版本:2.6.2,編譯環境:ubuntu 14.4。 不同版本的FFMPEG參數可能不同,可在FFMPEG目錄下使用以下命令查看 --help print this message --list-decoders show all available decoders --list-en ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...