- IDE問題:vs2015 :bool *visited = new bool[N]; 初始化為true; 帕逶冢客/leetcode:初始化為0阵具, 最好手動(dòng)循環(huán)初始化true/false。盡量手動(dòng)初始化定铜,不要編譯器默認(rèn)的阳液。
- 二維數(shù)組作為參數(shù)傳遞,需要確定列數(shù)揣炕。一定將二維換成一維數(shù)組進(jìn)行傳遞:
int *array = new int(n); // 動(dòng)態(tài)數(shù)組的定義帘皿。n為變量.之后需要手動(dòng)釋放,delete[] array;
int array[N]; //靜態(tài)數(shù)組的dingN為常量,隨著函數(shù)的調(diào)用結(jié)束自動(dòng)釋放畸陡。
void xxx(int *array)
void XX(int array[])
[]靜態(tài)數(shù)組是在棧中申請(qǐng)的鹰溜,而函數(shù)中的局部變量也是在棧中的虽填,而new動(dòng)態(tài)數(shù)組是在堆中的分配的,所以函數(shù)返回后曹动,棧中的東西被自動(dòng)釋放斋日,而堆中的東西如果沒有delete不會(huì)自動(dòng)釋放。所以墓陈,函數(shù)聲明的靜態(tài)數(shù)組不可能通過函數(shù)返回桑驱,因?yàn)樯嫫诘膯栴},函數(shù)調(diào)用完其內(nèi)部變量占用的內(nèi)存就被釋放了跛蛋。如果想通過函數(shù)返回一個(gè)數(shù)組熬的,可以在函數(shù)中用new動(dòng)態(tài)創(chuàng)建該數(shù)組,然后返回其首地址赊级。
- 筆試調(diào)試輸出:vs2015運(yùn)行窗口輸入 確保是英文輸入法(符號(hào)錯(cuò)誤很抓狂)押框。\
- 筆試輸入踩坑:
輸入字符(char)情況:
讀取多個(gè)字符串,中間用空格隔開理逊,回車結(jié)束.形式如下
Asd 123 333 dcd
char input橡伞;
cin>>input // 逐字符讀入,遇“空格”晋被、“TAB”兑徘、“回車”都結(jié)束;
while (cin>>tch) {
//cin遇到結(jié)束符結(jié)束羡洛,然后進(jìn)入下個(gè)循環(huán)挂脑,導(dǎo)致讀入的字符不包括換行、空格欲侮,tab崭闲。需要設(shè)置特定條件跳出循環(huán)。
}
為了獲取空格之類威蕉,可采用
char input = cin.get(); //獲取符號(hào)刁俭,不會(huì)忽略換位符\n,空格之類
while(cin.get( input ){
if (ch == '\n')
break; //可設(shè)置條件跳出循環(huán)韧涨;
}
等價(jià)于:
cin >> noskipws;//不會(huì)忽略 空格牍戚、回車,換行
char ch;
while (cin>>ch){
if (ch == '\n')
break;
}
輸入字符串(string)情況:
char a[20];
cin>>a; //接受一個(gè)字符串虑粥,遇“空格”如孝、“TAB”、“回車”都結(jié)束
cin.get(a,20);//用來接收一行字符串,可以接收空格
string str;
getline(cin,str);//cin.getline()屬于istream流舀奶,而getline()屬于string流暑竟,是不一樣的兩個(gè)函數(shù).
while(getline(cin,str){
//getline以換行停止,進(jìn)入下個(gè)循環(huán)斋射,需要手動(dòng)設(shè)置特定條件跳出循環(huán)育勺。
}
判斷map中是否存在某個(gè)key
vector<string> vec;
vector<string>::iterator iter = find(vec.begin(), vec.end(), "SZ000001");
if(iter != vec.end()){
//vec中存在"SZ000001"
}
else{
//沒找到
}
map<int, string> mapDemo;
map<int, string>::iterator iter = mapDemo.find(100);
if (iter != m_Int.end()) {
//找到了
}
else {
//沒找到
}