C 自我學習

2021-10-07 16:19:52 字數 3147 閱讀 5614

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...