1.第乙個程式
include
using namespace std;
int main()
iostream標頭檔案:預處理操作,執行在編譯源**之前。相對於c,c++標頭檔案省略了.h。
命名空間:using namespace std,此命名空間放在函式外與函式內作用域是不一樣的。函式外作用域後面的函式均可使用,函式內作用域僅限於函式內。若無此命名空間,則呼叫iostream庫中的物件應加上字首std::。
類:是使用者定義的一種資料型別,類之於物件就像型別之於變數。類描述了一種資料型別的全部屬性,物件是根據這些描述而建立的實體。
2.資料型別和變數
2.1基本型別:整型和浮點型
整型從小到大依次是:
bool,char,signed char,unsigned char,short,unsigned short,int,unsigned int,long,unsigned long,long long,unsigned long long。
c++對以上整型有乙個靈活的標準:
●short至少16位
● int至少和short一樣長
● long至少32位,且至少與int一樣長
● long long至少64位,且至少與long一樣長
std::cout << "sizeof = " << sizeof(int) << endl;//c++可省略sizeof的括號。
以上具體佔機器位元組數多少,可用seizof(*)列印當前機器不同型別的位元組數。
談到sizeof,應及時想起與strlen的區別。
區別:char與wchar_t型別,char16_t和char32_t型別:涉及到字符集編碼問題,後續討論。
變數命名規則:
常量:#define和const區別
浮點型:
float,double,long double表示浮點值的方法:一是小數點,二是e(e)指數法。如4.500 3.45e5
算術運算子%取餘兩個運算元都必須是整數。
不同型別的數值縮窄轉換會存在潛在問題。如下:
轉化潛在問題
將較大的浮點型轉換為較小的浮點型,如double轉float
精度降低,值可能超出目標型別的取值範圍,結果將不確定。
將浮點型轉換為整型
小數部分丟失,原來的值可能超出目標型別的取值範圍,結果將不確定。
將較大的整型轉換為較小的整型,如long轉short
原來的值可能超出目標型別的取值範圍,通常只複製右邊的位元組。
盡量不要做高精度資料往低精度資料轉換,且無符號位的資料計算級別高於有符號數。
c++中引入了4個強制型別轉換運算子:static_cast<>,const_cast<>,dynamic_cast<>,reinterpret_cast<>.後續討論。
2.2復合型別
陣列:一種儲存多個同型別的資料格式,下標從0開始。c++中初始化陣列時可省略 = 號。
注意:sizeof陣列名計算的是整個陣列的位元組數,sizeof陣列元素計算的是該元素所佔的位元組數。
string類簡介:
c++標準擴充套件了庫,因此string可以像陣列一樣用來儲存字串了。相對陣列來說,簡化了字串合併操作,也可以將乙個string賦給另乙個string物件。而陣列不能賦給另乙個陣列。後詳細討論。
c++增加了vector和array模板類來代替陣列。
下面簡單介紹下vector:
模板類vector類似於string類,也是一種動態陣列。可以在執行階段設定vector物件的長度,可在末尾附加新資料,也可在中間插入資料。
●要使用vector物件,vector標頭檔案需包含。
●其次,vector也包含在std命名空間中,可使用using編譯指令
●模板使用不同的語法來指出它儲存的資料型別
●vector類使用不同的語法來指定元素數
vectorvt (n)宣告建立乙個名為vt的乙個vector物件,它可儲存n個型別為typename的元素。其中引數n可為整型常量也可為整型變數。
模板類array與陣列一樣,長度固定,也使用棧,非自由儲存區。
arrayarr宣告建立乙個名為arr的乙個array物件,它可儲存n個型別為typename的元素。其中引數n可為整型常量不可為整型變數。
比較陣列,vector物件和array物件。
c++中getline()和get()方法的差異:兩者接受的引數都相同,並且都是讀取一行到行尾,但get()會儲存換行符,getline()反而丟棄它。
結構體:一種可以儲存多個不同資料型別的資料格式。
位欄位:struct torgle_register;冒號後面的數字指定了該成員占用特定的位數。
共用體:一種能夠儲存不同的資料型別,但只能同時儲存其中的一種型別資料格式。共用體所佔位元組大小為資料中最大成員的長度。
列舉:c++可利用列舉建立符號常量,且可在建立時初始化,若未初始化,後續的值總是相對上乙個資料後加一。
指標:本身是乙個變數,儲存的是變數的位址。使用指標時尤其要防止野指標。指標和陣列的差異後續討論。
動態分配記憶體:c++新增了new運算子來分配記憶體,delete釋放記憶體。與c的malloc/free差異後續討論。
2.3迴圈和表示式
for(initialization;test-expression;update-expression)
以上三者皆可為空。initialization迴圈只執行一次初始化;test-expression決定迴圈體是否被執行(此表示式若為1,則死迴圈);update-expression每輪迴圈結束時執行。
字首表示式和字尾表示式。
x++;先參與運算後x自增。
++x;x先自增然後再參與計算。
遷移學習 自我學習
最近在看ng的深度學習教程,看到self taught learning的時候,對一些概念感到很陌生。作為還清技術債的乙個環節,用半個下午的時間簡單搜了下幾個名詞,以後如果會用到的話再深入去看。監督學習在前一篇部落格中討論過了,這裡主要介紹下遷移學習 自我學習。因為監督學習需要大量訓練樣本為前提,同...
MVC自我學習
mvc自我學習 viewdata管理傳值 取值 1 htmlhelper 1 超連結 new 路由引數 new html引數 html.actionlink 關於 about home new new 2 dropdownlist listlist new list new selectlistit...
自我學習 Lambda
lambda運算子 所有的lambda表示式都是用新的lambda運算子 可以叫他,轉到 或者 成為 運算子將表示式分為兩部分,左邊指定輸入引數,右邊是lambda的主體。lambda表示式 1.乙個引數 param expr 2.多個引數 param list expr lambda常用的方法 1...