C++学习笔记,坚持自律!
C++學習筆記
- 前言
- 一、變量和基本類型
- 1.處理類型
- (1)auto類型說明符
- (2)decltype類型指示符
- 二、字符串、向量和數組
- 1.String
- (1)初始化
- (2)string對象上的操作
- ①使用getline讀取一整行
- ②處理string對象中的字符
- 2.vector
- (1)初始化
- (2)向vector中添加元素
- (3)vector的其他操作
- vector注意!!!
前言
放了寒假了,也不能去外邊玩,游戲也玩的沒意思了。只能窩在家好好學習了哈哈。
之前做數據結構題的時候,有好多都不會,然后就去CSDN上找那些大佬們做的,其中好多都是C++的,感覺C++好像很厲害,于是就買了一本C++的書,叫《c++ Primer》的書,第五版的,準備自學!!!
做這個筆記也無非就是想督促一下自己,希望能堅持下去吧!!
以下好多筆記都是源自于書上,若有侵權,立馬刪除!!!
提示:筆記主要還是挑一些重點的來看吧,基本上是那些不用于C的。
如果大佬們還有自己認為重要的知識點,歡迎來補充~~~
感謝!!!
一、變量和基本類型
1.處理類型
(1)auto類型說明符
auto是讓編譯器自己去分析表達式所屬的類型
它會忽略頂層const,如果希望是頂層的,則需聲明出來
(2)decltype類型指示符
選擇并返回操作數的數據類型
decltype((variable))的結果永遠是 引用
decltype(variable)的結果只有當variable本身就是一個引用時才是引用
二、字符串、向量和數組
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對象中的字符
此處用到了頭文件 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那樣使用下標;
還有一種是使用迭代器(??)
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(3)vector的其他操作
這些操作基本上和string的一些操作差不多
| v.empty() | 如果v不含有任何元素,返回真;反之,則假 |
| v.size() | v中元素的個數 |
| v[n] | 返回v中第n個位置上元素的引用 |
| v1=v2 | 用v2中元素的拷貝替換v1中的元素 |
| v1={a,b,c…} | 用列表中元素的拷貝替換v1中的元素 |
| v1==v2 | v1和v2相等當且僅當它們的元素數量相同且對應位置的元素值都相同 |
| <,<=,>,>= | 以字典順序進行比較 |
vector注意!!!
vector的下標類型和string的一樣,都是 size_type 類型。不能用下表形式添加元素舉個栗子
比如向vector對象中添加10個元素
在這里邊,第一個for循環是錯誤的,v是一個空vector,不包含任何元素,所以也就不存在可以通過下標去訪問元素。
要想添加元素,就目前而言,只能用push_back(t),向尾端添加元素。
總結
以上是生活随笔為你收集整理的C++学习笔记,坚持自律!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux NTP服务器搭建
- 下一篇: C++语言课程设计——职工工资表