C++學習筆記
- 前言
- 一、變數和基本型別
- 1.處理型別
- (1)auto型別說明符
- (2)decltype型別指示符
- 二、字串、向量和陣列
- 1.String
- (1)初始化
- (2)string物件上的操作
- ①使用getline讀取一整行
- ②處理string物件中的字符
- 2.vector
- (1)初始化
- (2)向vector中添加元素
前言
放了寒假了,也不能去外邊玩,游戲也玩的沒意思了,只能窩在家好好學習了哈哈,
之前做資料結構題的時候,有好多都不會,然后就去CSDN上找那些大佬們做的,其中好多都是C++的,感覺C++好像很厲害,于是就買了一本C++的書,叫《c++ Primer》的書,第五版的,準備自學!!!
做這個筆記也無非就是想督促一下自己,希望能堅持下去吧!!
以下好多筆記都是源自于書上,若有侵權,立馬洗掉!!!
提示:筆記主要還是挑一些重點的來看吧,基本上是那些不用于C的,
如果大佬們還有自己認為重要的知識點,歡迎來補充~~~
感謝!!!
一、變數和基本型別
1.處理型別
(1)auto型別說明符
auto是讓編譯器自己去分析運算式所屬的型別
它會忽略頂層const,如果希望是頂層的,則需宣告出來
int i=1;
const int ci=i, &cr=ci;
auto b=ci; //b是一個整數,ci的頂層const被忽略掉了
auto c=cr; //c是一個整數,同上
auto d=&i; //d是一個整型指標
auto e=&ci //e是一個指向整數常量的指標,底層const
const auto f=ci; //ci的推演型別是int,f是const int
(2)decltype型別指示符
選擇并回傳運算元的資料型別
decltype((variable))的結果永遠是 參考
decltype(variable)的結果只有當variable本身就是一個參考時才是參考
decltype(f()) sum=x; //sum的型別就是函式f的回傳型別
decltype((i)) d; //錯誤:d是int&,必須初始化
decltype(i) d; //正確:e是一個(為初始化的)int
二、字串、向量和陣列
using:頭檔案不應包含using
1.String
(1)初始化
string s1; //默認初始化,s1是一個空字串
string s2(s1); //s2是s1的副本
string s2=s1; //同上
string s3("value"); //s3是字面值"value"的副本,除了字面值最后的那個空字符外
string s(n,'c'); //把s初始化為由連續n個字符c組成的字符
(2)string物件上的操作
| 操作 | 作用 |
|---|---|
| os<<s | 將s寫到輸出流os中,回傳os |
| is<<s | 從is中讀取字串賦給s,字串以空白分隔,回傳is |
| getline(is,s) | 從is中讀取一行賦給s,回傳is |
| s.empty() | 判斷為慷訓傳true,不為慷訓傳false |
| s.size() | 回傳s中字符的個數 |
| s[n] | s中第n個字符,n從0開始 |
| s1+s2 | s1和s2連接 |
| s1=s2 | 賦值 |
| s1==s2 | 判斷 |
| s1!=s2 | 對大小寫敏感 |
| <,<=,>,>= | 利用字符在字典中的順序進行比較,對大小寫敏感 |
①使用getline讀取一整行
如果直接用 cin 輸入的話,他會從第一個非空白符開始讀取,直到遇見下一處空白為止,
若想要那被忽略掉的空白符,那么就會用到getline陳述句,
代碼如下(示例):
string line;
//每次讀取一行,直到檔案末尾?
while (getline(cin,line))
cout << line << endl; //line中不包含換行符,需要手動添加
②處理string物件中的字符
此處用到了頭檔案 cctype
| 操作 | 作用 |
|---|---|
| isalnum( c ) | 當c是字母或數字時為真 |
| isalpha( c ) | 當c是字母時為真 |
| iscntrl( c ) | 當c是控制字符時為真 |
| isdigit( c ) | 當c是數字字符時為真 |
| isgraph( c ) | 當c不是空格但可列印時為真 |
| islower( c ) | 當c是小寫字母時為真 |
| isprint( c ) | 當c是可列印字符時為真 |
| ispunct( c ) | 當c是標點符號時為真 |
| isspace( c ) | 當c是空白時為真(空格、制表符、回車、換行、進紙符) |
| isupper( c ) | 當c是大寫字母時為真 |
| isxdigit( c ) | 當c是十六進制時為真 |
| tolower( c ) | 如果c是大寫字母,則輸出小寫字母,否則原樣輸出 |
| toupper( c ) | 與上相反 |
要想處理string中的一部分字符
一種是可以像C那樣使用下標;
還有一種是使用迭代器(??)
//處理每個字符,用基于范圍的for陳述句
string str("some string");
//每行輸出str中的一個字符
for(auto c:str)
cout << c << endl;
2.vector
學完vector之后,第一印象是感覺這個有點像資料結構里邊講的堆疊,但它比堆疊靈活多了
(1)初始化
1、參考不可以成為vector的元素,因為他不是物件
2、可以用花括號初始化每一個值
3、可以用括號指定元素個數或相同的元素值
4、只能使用直接初始化,不可以使用拷貝初始化(只有在型別相同的時候才可以拷 貝)
5、適用于三種情況:①初始值已知且數量較少
???????????????????②初始值是另一個vector物件的副本
???????????????????③所有元素的初始值都一樣
(2)向vector中添加元素
舉個書上的例子
vector<int> v; //空vector物件
for(int i=0;i!=100;++i)
v.push_back(i); //依次把整數值放到v的尾端,相當于堆疊的后入
//回圈結束后v有100個元素,從0到99
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/247731.html
標籤:其他
上一篇:港口的集裝箱
下一篇:c語言入門
