讀書筆記(四)---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] = {2,3};
函式名加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索引作為大多數資料庫的索引資料結構,