c++零碎問(wèn)題記錄

2020年3月6日犬第,正式開(kāi)始學(xué)習(xí)C++诀姚。記錄leetcode上遇到東西儡炼;

1.C++使用變量作為數(shù)組長(zhǎng)度

數(shù)組長(zhǎng)度必須為常量妓湘,其空間分配在中——預(yù)編譯時(shí)就要確定。

解決方法:繞過(guò)棧內(nèi)存射赛,將數(shù)組空間開(kāi)辟在堆空間:

int *d=new int[n];//動(dòng)態(tài)數(shù)組
//注意:使用完要 delete[],防止內(nèi)存泄漏

2.整數(shù)上下限

#define INT_MAX 2147483647
#define INT_MIN (-INT_MAX-1)

3.<sstream>定義stringstream類用法

用于流的輸入輸出操作——提供格式轉(zhuǎn)換多柑。

//將整型 x轉(zhuǎn)換成string型 str
stringstream ss;
string ss;
ss<<x;
ss>>str;

不會(huì)主動(dòng)釋放內(nèi)存,需清空:
ss.clear();ss.str("");

4.字符串操作

vector<string> ss={"yang","zhao"};
訪問(wèn)某元素方式楣责,ss[i][j]ss[i].at(j)竣灌。

讀取字符串長(zhǎng)度
sizeof():運(yùn)算符,值在編譯時(shí)確定,不能用于返回動(dòng)態(tài)分配空間大小秆麸。
strlen():函數(shù)初嘹,其參數(shù)必須為char *,返回字符串長(zhǎng)度(不包括/0)
string類中l(wèi)ength()/size():返回字節(jié)數(shù)

子串
.substr(i,n); :字符串第i個(gè)位置開(kāi)始長(zhǎng)度為n的子串

查找
s.find(s2,pos);:從下標(biāo)pos開(kāi)始查找string對(duì)象s2,返回找到第一次匹配的下標(biāo)值。
s.find_first_of(args);:在s中查找args的任意字符第一次出現(xiàn)的位置沮趣。

5.constexpr關(guān)鍵字(C++11)

  • 生成常量表達(dá)式:編譯時(shí)便計(jì)算出調(diào)用地方的結(jié)果屯烦。
constexpr int multiply (int x, int y){
    return x * y;
}
// 將在編譯時(shí)計(jì)算
const int val = multiply( 10, 10 );
  • 允許函數(shù)被應(yīng)用在以前調(diào)用宏的所有場(chǎng)合,如可用constexpr函數(shù)聲明數(shù)組大小。
constexpr int getDefaultArraySize (int multiplier){
    return 10 * multiplier;
}
int my_array[ getDefaultArraySize(3)];//編譯時(shí),聲明數(shù)組 my_array[30]

constexpr函數(shù)的限制:

  • 函數(shù)中只能有一個(gè)return語(yǔ)句(有極少特例)
  • 只能調(diào)用其它c(diǎn)onstexpr函數(shù)
  • 只能使用全局constexpr變量
    注意遞歸并不受限制。但只允許一個(gè)返回語(yǔ)句驻龟,那如何實(shí)現(xiàn)遞歸呢温眉?可以使用三元運(yùn)算符(?:)。例如翁狐,計(jì)算n的階乘:
constexpr int factorial (int n){
    return n > 0 ? n * factorial( n - 1 ) : 1;
}

constexpr函數(shù)的特點(diǎn):

  • 只允許包含一行可執(zhí)行代碼类溢。但允許包含typedefs、 using declaration && directives露懒、靜態(tài)斷言等闯冷。
  • 同樣可在運(yùn)行時(shí)被調(diào)用,當(dāng)這個(gè)函數(shù)的參數(shù)是非常量的懈词。
  • 編譯時(shí)使用類對(duì)象蛇耀,具體參考C++11系列-常量表達(dá)式

6.std

std里面定義了C++的各種標(biāo)識(shí)符,使用容器要#include<容器頭文件>using namespace std;坎弯。

7.

accumulate(a,a+n,initialValue,operator)其中a指向首元素纺涤,a+n指向尾元素后一個(gè)元素,將首尾中間的元素按照operator(指定的算法比如相加)之后再加上initialValue之后再返回抠忘。

  1. copy(start ,end, to)將元素從位置start,start+1...end-1依次復(fù)制到位置to,to+1,...to+end-start洒琢。必將常用的是copy(list,list+m+1,ostream_iterator<T>(cout,""))其中ostream_iterator<T>(cout,"")是個(gè)流迭代器它指向cout流,這就話的意思就是將list和list+m+1之間的內(nèi)容復(fù)制到輸出流褐桌,也就是用cout輸出這其中的內(nèi)容衰抑。

8.new初始化

int *pia = new int[10];    // 10個(gè)未初始化int
int *pia2 = new int[10](); // 10個(gè)值初始化為0的int

9.指針指向類型

  • char每次移動(dòng)1個(gè)字節(jié);short移動(dòng)2個(gè)字節(jié) 荧嵌;int , long ,float移動(dòng)4個(gè)字節(jié) 呛踊;double移動(dòng)8個(gè)字節(jié)
  • 無(wú)論是整型數(shù)組還是字符數(shù)組,數(shù)組名作為右值的時(shí)候都代表數(shù)組首元素的首地址啦撮。
    數(shù)組發(fā)生降級(jí)(數(shù)組名退化為數(shù)組首元素的地址)的情況:數(shù)組傳參谭网、數(shù)組名參與運(yùn)算
    數(shù)組名不會(huì)發(fā)生降級(jí)的情況:sizeof(數(shù)組名)、取地址數(shù)組名(取到的是整個(gè)數(shù)組的地址而不是首元素的地址)
    比較分析與數(shù)組相關(guān)的sizeof和strlen
    32位指針是4字節(jié)

sizeof():
https://blog.csdn.net/skyroben/article/details/53207795

計(jì)算數(shù)組大小:
  • 當(dāng)括號(hào)傳數(shù)組名赃春,指的是整個(gè)數(shù)組所有元素占多少個(gè)字節(jié)愉择;當(dāng)傳數(shù)組元素,指的是數(shù)組元素占多少個(gè)字節(jié)织中;一般有取地址符&使用sizeof計(jì)算所占內(nèi)存的大小即為計(jì)算地址的大小為四個(gè)字節(jié)(32位機(jī)器)锥涕。
計(jì)算類大腥薄:

(1)首先看一下類有沒(méi)有父類悼瘾,如果沒(méi)有父類:

     a:且沒(méi)有虛函數(shù)的話缴渊,直接計(jì)算類的成員變量的大幸乇酢(注:類的靜態(tài)成員變量不計(jì)入類的大小)泻肯;
     b:有虛函數(shù)的話叠纹,類的大小=類的成員變量的大小+一個(gè)虛表地址的大小  玉控; 

(2) 有父類:

 a:父類沒(méi)有虛函數(shù),子類也沒(méi)有虛函數(shù) 座每,直接計(jì)算兩個(gè)類的成員變量的大小相加前鹅;
 b:子類有虛函數(shù)或者父類有虛函數(shù)或者兩個(gè)都有虛函數(shù),類的大小=兩個(gè)類的成員變量的大小之和+一個(gè)虛表地址的大星褪帷嫡纠;

(3)菱形繼承(沒(méi)有虛繼承):

8.

int*p1 = reinterpret_cast<int*>(p); //將p強(qiáng)制轉(zhuǎn)換位int* 賦值給p1

  • 堆上的對(duì)象指針:手動(dòng)釋放,new;
  • 棧上的對(duì)象,main函數(shù)結(jié)束釋放延赌;
  • 靜態(tài)儲(chǔ)存區(qū),在程序結(jié)束時(shí)釋放叉橱,static;

虛函數(shù)——?jiǎng)討B(tài)綁定:

  • 虛函數(shù):基類函數(shù)聲明為virtual時(shí)挫以,指向派生,除非派生沒(méi)有可調(diào)用的實(shí)現(xiàn)窃祝,才調(diào)用基類虛函數(shù)掐松。
  • 不為虛函數(shù):基類指針必然調(diào)用基類方法,派生類指針必然調(diào)用派生類方法

構(gòu)造函數(shù)

9粪小、深拷貝大磺、淺拷貝(拷貝構(gòu)造)

  • 深拷貝:被拷貝對(duì)象在動(dòng)態(tài)分配的存儲(chǔ)空間,先動(dòng)態(tài)申請(qǐng)一塊存儲(chǔ)空間探膊,逐字節(jié)拷貝內(nèi)容杠愧;
  • 淺拷貝:僅拷貝指針字面值——當(dāng)釋放原對(duì)象,產(chǎn)生空懸指針逞壁。

10流济、在c/c++函數(shù)中,不應(yīng)該返回局部變量數(shù)組

  • 在函數(shù)中腌闯,局部變量是存儲(chǔ)在棧內(nèi)存中的绳瘟,而函數(shù)的返回是值拷貝
  • 因此數(shù)組返回實(shí)際是返回指向棧內(nèi)存中這個(gè)原數(shù)組的首地址姿骏,但是函數(shù)結(jié)束后該內(nèi)存是會(huì)被自動(dòng)回收糖声,因此該指向的棧內(nèi)存是無(wú)效的。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末分瘦,一起剝皮案震驚了整個(gè)濱河市蘸泻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嘲玫,老刑警劉巖蟋恬,帶你破解...
    沈念sama閱讀 221,430評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異趁冈,居然都是意外死亡歼争,警方通過(guò)查閱死者的電腦和手機(jī)拜马,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)沐绒,“玉大人俩莽,你說(shuō)我怎么就攤上這事∏钦冢” “怎么了扮超?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,834評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)蹋肮。 經(jīng)常有香客問(wèn)我出刷,道長(zhǎng),這世上最難降的妖魔是什么坯辩? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,543評(píng)論 1 296
  • 正文 為了忘掉前任馁龟,我火速辦了婚禮,結(jié)果婚禮上漆魔,老公的妹妹穿的比我還像新娘坷檩。我一直安慰自己,他們只是感情好改抡,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布矢炼。 她就那樣靜靜地躺著,像睡著了一般阿纤。 火紅的嫁衣襯著肌膚如雪句灌。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,196評(píng)論 1 308
  • 那天欠拾,我揣著相機(jī)與錄音涯塔,去河邊找鬼。 笑死清蚀,一個(gè)胖子當(dāng)著我的面吹牛匕荸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播枷邪,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼榛搔,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了东揣?” 一聲冷哼從身側(cè)響起践惑,我...
    開(kāi)封第一講書(shū)人閱讀 39,671評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎嘶卧,沒(méi)想到半個(gè)月后尔觉,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,221評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡芥吟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評(píng)論 3 340
  • 正文 我和宋清朗相戀三年侦铜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了专甩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,444評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡钉稍,死狀恐怖涤躲,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情贡未,我是刑警寧澤种樱,帶...
    沈念sama閱讀 36,134評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站俊卤,受9級(jí)特大地震影響嫩挤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜消恍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評(píng)論 3 333
  • 文/蒙蒙 一岂昭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧哺哼,春花似錦、人聲如沸叼风。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,285評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)无宿。三九已至茵汰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間孽鸡,已是汗流浹背蹂午。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,399評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留彬碱,地道東北人豆胸。 一個(gè)月前我還...
    沈念sama閱讀 48,837評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像巷疼,于是被迫代替她去往敵國(guó)和親晚胡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容