日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++学习笔记,坚持自律!

發布時間:2023/12/20 c/c++ 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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,如果希望是頂層的,則需聲明出來

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是一個指向整數常量的指針,底層constconst 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+s2s1和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

(3)vector的其他操作

這些操作基本上和string的一些操作差不多

操作作用
v.empty()如果v不含有任何元素,返回真;反之,則假
v.size()v中元素的個數
v[n]返回v中第n個位置上元素的引用
v1=v2用v2中元素的拷貝替換v1中的元素
v1={a,b,c…}用列表中元素的拷貝替換v1中的元素
v1==v2v1和v2相等當且僅當它們的元素數量相同且對應位置的元素值都相同
<,<=,>,>=以字典順序進行比較

vector注意!!!

vector的下標類型和string的一樣,都是 size_type 類型。不能用下表形式添加元素

舉個栗子
比如向vector對象中添加10個元素

vector<int> v; //空vector對象 for(decltype ( v.size() ) i=0;i!=10;i++)v[i]=i; for(decltype ( v.size() ) i=0;i!=10;i++)v.push_back(i);

在這里邊,第一個for循環是錯誤的,v是一個空vector,不包含任何元素,所以也就不存在可以通過下標去訪問元素。
要想添加元素,就目前而言,只能用push_back(t),向尾端添加元素。

總結

以上是生活随笔為你收集整理的C++学习笔记,坚持自律!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。