1. 程式人生 > >讀書筆記(四)---C++ Primer

讀書筆記(四)---C++ Primer

C++基礎

變數型別

(1) char 型別是否是有符號由編譯器決定。有符號範圍為:-128~127
(2) 經驗準則
a、明確不能為負時,用無符號;
b、用int執行整數運算;
c、算術表示式不要有char、bool,如果要用要明確signed char 或 unsigned char;
d、浮點運算用 double。
(3) 型別轉換
a、當賦值給有符型別超出範圍是,是未定義的行為。

宣告與定義

定義分配了空間,且可能賦值

 extern int a=1; // 是定義

const

變數初始化時,不區分const、非const,都可以賦值

2.

const
int *p; //允許改變p,不允許改變p所指變數 int *const p; //不允許改變p,允許改變p所指變數

如果想在多個檔案中共享const變數,定義前要加extern,然後在其他呼叫的檔案中宣告

int i=5; const int &r = i;  //正確:不允許通過r來改變i 的值
int i=5; const int *r = &i;  //正確:不允許通過r來改變i 的值

定義類的 const 陣列

//在.h檔案中宣告定義
static const int kParamMaxLen[MAX_PARAM_TYPE];
//在.cpp檔案中初始化
const int
CCalc::kParamMaxLen[MAX_PARAM_TYPE] = {23};

函式名加const,void function() const{}

class aa{
    int num;
public:
    aa(){
        int b =10;
        num = b;
    };
    void out1(){
        cout<<num<<endl;
    }
    void out2() const{
        cout<<num<<endl;
    }
    void
out3() const{ num+=10; //出錯,const函式不能修改其資料成員 cout<<num<<endl; } }; int _tmain(int argc, _TCHAR* argv[]) { aa a1; a1.out1(); a1.out2(); a1.out3(); const aa a2; a2.out1(); // 錯誤,const的成員 不能訪問非const的函式 a2.out2(); a2.out3(); return 0; }

typedef

typedef char* pstring;
     const pstring str; //表示指向char 的 常量指標
    const char* str;    //表示指向常量char 的指標

字串、向量、陣列

(1) 標頭檔案不應包含using宣告
因為標頭檔案會被拷貝到引用它的檔案中去,這樣可能會引起名字衝突。

string s5 = "hiya"; //拷貝初始化
string s6 ("hiya"); //直接初始化

(3)string的操作

os<<s   //將s寫到輸出流os當中,返回os
is>>s   //從is中讀取字串賦給s,字串以空白分隔,返回is
getline(is, s)   //從is中讀取一行賦給s,返回is

(4)有size()函式就不要定義int型別。

(5)改變字元特性—-cctype標頭檔案

迭代器

(1) 使用迭代器的迴圈體,不要向迭代器所屬容器新增元素。

表示式

(1) 取餘

m%(-n) = m%n ; (-m)%n=-(m%n)

(2)前置運算子
優先使用前置運算子。提高效能。

函式

(1) 預編譯器定義了4個用於程式除錯的變數

__func__ 是編譯器定義的一個區域性靜態變數,用於存放函式的名字
__FILE__/__LINE__/__TIME__/__DATE__

(2) 函式匹配

    void ff(int)
    void ff(short)
    ff('a')  //char會提升為int,呼叫ff(int)

    void f1(long)
    void f1(float)
    f1(3.14) //錯誤:二義性呼叫.3.14型別是double,既能轉成long也能轉成float

C++ 標準庫

順序容器

各容器效能對比

容器名稱 效能
vector 可變陣列大小,隨機訪問快。插入刪除在尾部意外的位置效率可能不高
deque 雙端佇列。在頭部尾部插入刪除效率高
list 雙端連結串列。在任意位置插入刪除效率高,訪問效率低
forward_list 單端連結串列。在任意位置插入刪除效率高,訪問效率低
array 固定大小。支援隨機訪問,不能插入刪除
string 跟vector類似

相關推薦

讀書筆記---C++ Primer

C++基礎 變數型別 (1) char 型別是否是有符號由編譯器決定。有符號範圍為:-128~127 (2) 經驗準則 a、明確不能為負時,用無符號; b、用int執行整數運算; c、算術表示式不要有char、bool,如果要用要明確signe

《可愛的Python》讀書筆記

grep 遞歸調用 不斷否定自己,但要堅持最初的意願。小白已經實現了"將光盤內容索引存儲為硬盤上的*.cdc文本文件",並獲得了命令行工具樣的程序,可以通過命令行調用python pycdc.pyw -e test.txt快速指定文件名。類似grep一樣,現在要實現搜索的功能,打開

《Python網絡數據采集》讀書筆記

wiki 維基 scrapy 1、遍歷單個域名維基百科那些指向詞條頁面(不是指向其他內容頁面)的鏈接有三個共同點:? 它們都在id是bodyContent的div標簽裏? URL鏈接不包含分號? URL鏈接都以/wiki/開頭# -*- coding: utf-8 -*- import re fr

機器學習讀書筆記樸素貝葉斯基礎篇之網站賬號分類

pan 技巧 nbsp 增強 就是 使用 分類問題 預測 結果 一、條件概率 在學習計算p1和p2概率之前,我們需要了解什麽是條件概率,就是指在事件B發生的情況下,事件A發生的概率,用P(A|B)來表示。 根據文氏圖,可以很清楚地看到在事件B發生的情況下,事件A發

《JavaScript高級程序設計》讀書筆記變量、作用域和內存問題

att 數量 線程 添加屬性 限制 mil web 全局 正常 內容---理解基本類型和引用類型的值---理解執行環境---理解垃圾收集 --JavaScript變量松散類型的本質--決定了它只是在特定時間用於保存特定值的一個名字而已--變量的值及其數據類型可以在腳本的生命

《深入理解計算機系統》讀書筆記ch2+ C 泛型

tex byte 指向 get 讀書筆記 class its n) 支持 本章主要介紹各類型的機器表示,Stanford的CS107的lec2和lec3有精彩解釋,比看書快(當作書中只是的cache吧)。 lec4中介紹的C裏面如何使用泛型(沒有template, refe

Unity5權威講解之菜鳥讀書筆記

    Unity5權威講解之菜鳥讀書筆記(四) 16.Mecanim動畫系統 動畫型別 型別 特徵 Legacy Unity4.0

遊戲人工智慧 讀書筆記 AI演算法簡介——Ad-Hoc 行為程式設計

本文內容包含以下章節: Chapter 2 AI Methods Chapter 2.1 General Notes 本書英文版: Artificial Intelligence and Games - A Springer Textbook     這

JavaEE權威讀書筆記JavaBean

1,bean.Team package bean; public class Team { private int id; private String name; private String slogan; private String leader; pu

《Mybatis從入門到精通》讀書筆記

第九章. Spring整合Mybaits MyBatis-Spring可以幫助我們將Mybaits程式碼無縫整合到Spring中。使用這個類庫中的類,Spring將會載入必要的Mybaits工廠類和

機器學習實戰讀書筆記:樸素貝葉斯演算法

樸素貝葉斯 優點: 在資料較少的情況下仍然有效 可以處理多類別問題 缺點:對輸入的資料的準備方式較為敏感 適用資料型別:標稱型資料 p1(x,y)>p2(x,y) 那麼類別是1 p2(x,y)>p1(x,y) 那麼類別是2 貝葉斯決策的核心是選擇具有最高概率的決策

《強化學習Sutton》讀書筆記——蒙特卡洛方法Monte Carlo Methods

此為《強化學習》第五章。 上一節中的動態規劃方法需要知道整個environment的資訊,但有的時候,我們只有經驗 (Experience) (比如一組取樣),而對environment沒有任何其他知識;或者我們有一個可以互動的黑盒,通過黑盒可以進行模擬得到experience,但具體黑

高效能 JavaScript 讀書筆記

迴圈 1.減少迭代的工作量 2.倒序迴圈 條件語句 if-else && switch 大多數情況下,switch 比 if-else 執行的快。但只有條件數量很大的時候才明顯。 優化 if-else 1.把最可能出現的條件放在最前面。 2.巢

《資料演算法-Hadoop/Spark大資料處理技巧》讀書筆記——移動平均

移動平均:對時序序列按週期取其值的平均值,這種運算被稱為移動平均。典型例子是求股票的n天內的平均值。 移動平均的關鍵是如何求這個平均值,可以使用Queue來實現。 public class MovingAverageDriver { public

Head First Python 讀書筆記

第六章:儲存和管理資料 開啟,處理,關閉檔案 開啟一個檔案 todos = open('todos.txt','a'),a表示以追加的模式開啟一個檔案,返回一個檔案流(物件)賦給變數todos 寫入資料 print('this is cat',fi

《SpringBoot實戰第版》讀書筆記-- SpringCloud入門

1、現階段,單塊式架構師一份程式碼,部署和伸縮都是基於單個單元進行的,優點在於易於部署,但是面臨著可用性低、伸縮性差、集中釋出的生命週期以及違反單一功能原則。這就是SpringCloud的優勢所在,微服務的出現解決了這個問題。2、微服務將按照邊界拆分成單個服務,體現出分散式的

C++學習筆記C++中友元friend的用法和應用例項

C++中的友元機制允許類的非公有成員被一個類或者函式訪問,友元按型別分為三種: (1)普通非類成員函式作為友元 (2)類的成員函式作為友元 (3)類作為友元。 友元包括友元的宣告以及友元的定義。友元

Python《機器學習實戰》讀書筆記——樸素貝葉斯

第四章 基於概率論的分類方法:樸素貝葉斯 4-1 基於貝葉斯決策理論的分類方法 優點:在資料較小的情況下仍然有效,可以處理多類別問題 缺點:對於輸入資料的準備方式較為敏感。 適用資料型別:標稱型資料。 假設現在我們有一個數據集,它由兩類資

Java多執行緒程式設計實戰指南核心篇讀書筆記

博主準備惡補一番Java高併發程式設計相關知識,接下來將閱讀該書,並且進行比較詳細的總結,好記性不如爛筆頭,加油。Java多執行緒程式設計實戰指南(核心篇)讀書筆記(四),主要記錄該書第七章和第八章的基

高效能mysql讀書筆記

四,建立高效能的索引 索引也稱為鍵,索引是一種查詢資料有用的資料結構,索引優化是查詢優化中最優效的手段。 索引可以包含一列或者多列,mysql能夠高效的使用索引中的最左字首列,索引在儲存引擎層實現,不同的儲存引擎有不同的索引。B-tree索引作為大多數資料庫的索引資料結構,