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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

代码教训总结

發(fā)布時(shí)間:2024/10/12 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 代码教训总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2018/5/19
用整數(shù)表示集合時(shí),判斷第 i 個(gè)元素是否屬于集合 S,可以用 if (S & 1 << i) 或 if (S >> i & 1) 。判斷第 i 個(gè)元素是否不屬于集合 S 時(shí),我一般會(huì)用 if ( (S & 1 << i) == 0 ),但是這樣寫有一個(gè)壞處:常常會(huì)忘記 bitwise and(&)算符的優(yōu)先級(jí)低于 == 算符。有兩個(gè)更好的寫法可以避免這個(gè)問題,第一個(gè)是 if ( !(S & 1 << i) ),因?yàn)槲抑?! 算符的優(yōu)先級(jí)是很高的;第二個(gè)是 if ( ~S & 1 << i ) 這個(gè)寫法不需要括號(hào),可以說是很優(yōu)雅了 XD,但是由于要多算 ~S, 是否會(huì)比較慢?(玄學(xué)) 。

Remark:&、^、|、&&、|| 都比 == 優(yōu)先級(jí)低。


2018/4/21
WA 了首先要檢查輸入數(shù)據(jù)的類型是否跟數(shù)據(jù)范圍匹配。


2018/4/18
在某個(gè)問題中,需要實(shí)現(xiàn)以下過程。
維護(hù)一個(gè)二元組(std::pair<int,int>)的集合。
pair 的第二維表示 unique 且 const 的 ID,第一維只減不增,并且始終大于等于 $0$ 。
每次從集合中取出第一維為 $0$ 的 pair(并將其從集合中刪除,保證這樣的 pair 存在),然后將集合中的某些 pair 的第一維減 $1$ 。

我的寫法:

  • 用 std::set<std::pair<int,int>> 支持取出第一維是 $0$ 的 pair
  • 用一個(gè)數(shù)組存儲(chǔ)每個(gè) ID 對(duì)應(yīng)的 std::pair<int,int>::first 的當(dāng)前值。
  • 若 set 中第一個(gè)元素的第一維與數(shù)組中的值不相等,則更新

這種做法是有問題的,因?yàn)椴⒉荒艽_任當(dāng)前 set 中的第一個(gè)元素的第一維的實(shí)際值就是 $0$ 。
正確的做法是即時(shí)更新 set 中的元素(先 erase 舊的,再 insert 新的),而且上述數(shù)組也是不必要的。


2018/1/1
對(duì) $m$ 取模的運(yùn)算,一定保證最后結(jié)果在 $0$ 到 $m-1$ 之間。

DP:要考慮是否有某些狀態(tài)雖然是個(gè)合法狀態(tài),但是始終沒被計(jì)算到。

2018/1/2
變量命名:若用 #include <bits/stdc++.h> 引入頭文件,prev,next 這兩個(gè)名字都會(huì)引起變量名沖突,可以用 prv 和 nxt 代替。

2018/1/3
不要濫用 for 循環(huán),用 while 循環(huán)合適時(shí)應(yīng)當(dāng)用 while 。

2018/4/2
“把簡單的問題搞復(fù)雜”、“很短的代碼就能解決,我的代碼卻很長”;這類錯(cuò)誤是不能容忍的。

2018/4/3
用 range-for 遍歷容器 a 時(shí),若要修改容器中的元素則應(yīng)該用 for(auto &x: a) 。不修改時(shí),也可以這么用,所以用 range-for 時(shí),總是采用引用的形式。

轉(zhuǎn)載于:https://www.cnblogs.com/Patt/p/8167365.html

總結(jié)

以上是生活随笔為你收集整理的代码教训总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。