1.初始化函式【c/c++】
(1) memset是計算機中c/c++語言初始化函式。作用是將某一塊記憶體中的內容全部設定為指定的值, 這個函式通常為新申請的記憶體做初始化工作。
(2)函式原型:extern void *memset(void *buffer, int c, int count)
buffer:為指標或是陣列
c:是賦給buffer的值
count:是buffer的長度
(3)c中: #include
c++中: #include
(4)要點: memset可以方便快速的清空乙個結構型別的變數或陣列。
例1. 用在對定義的字串進行初始化為『 』或『/0』;
char a[
100]
;memset
(a, 『/
0』,sizeof
(a))
;
例2. 用在對定義的數字陣列進行初始化為0或-1等;
int a[
100]
;memset
(a,0
,sizeof
(a))
;
2.比較函式
在用c寫題時,涉及比較大小尋找最大最小值時,可以借用c++的min/max函式。
注:**前應加上:
#include
using namespace std;
3.排序函式
c語言中排序需要敲出排序部分(冒泡,選擇,插入等),但因容易書寫的演算法效率並不高(時間複雜度有點高)效率高的排序演算法寫起來又太複雜。因而在寫c中若涉及排序問題,可以呼叫c++的sort函式。
(1)sort()函式給整型陣列排序
sort(乙個位址a(從哪乙個開始排序),(好好思考這個位置)乙個位址b(你想要停止排序的那個元素的後一位位址),乙個控制排序規則的函式);好像有點抽象,簡單來說,就是從a到b-1的所有元素參與排序,如果是公升序,那麼排序規則函式不用寫,如果是降序或者是其他自定義排序,請看後文cmp函式書寫。
#include
#include
using namespace std;
intmain()
;sort
(a,a+11)
;for
(int i=
0;i<
11;i++
)return0;
}
特別注意的是若從a[0]-a[10]排序,寫的是sort(a,a+11)。
(2)其他的排序方式
如果不寫排序規則函式,sort函式預設從小到大排序,現在我們想從大到小排序怎麼辦?
#include
#include
using namespace std;
bool cmp
(int a,
int b)
intmain()
;sort
(a,a+
11,cmp)
;for
(int i=
0;i<
11;i++
)return0;
}
只需要加上:
bool cmp
(int a,
int b)
並且在呼叫sort的時候第三個引數寫cmp就行了。如sort(a,a+11,cmp)是給a[0]到a[10]排序。
(3)string類也可以用sort排序
#include
#include
#include
using namespace std;
bool cmp
(string a,string b)
intmain()
;sort
(a,a+
4,cmp)
;for
(int i=
0;i<
4;i++
)printf
("%d\n"
, a[i]);
return0;
}
(4)以結構體為例的高階排序以題目為例講解:
第二週集訓總結
這一周下來主要是對上乙個週看的前三章做乙個 的實現,雖然 有模板和例題,但是仍然有幾個演算法沒有完成實現。對於第一章的內容,我關注的重點是二進位制轉化和二分,在這週的最後幾天也有狂刷二分的題 雖然並沒有刷太多道 但是對二分的題目還是不太熟悉。昨天的最後一道題,一開始並沒有想到用二分,但是在別人拿到一...
(7 6 7 20)集訓總結
電腦鍵盤莫名出鍋,打字真的不易,所幸之前已經寫了一篇 關於最近 7.6 7.20 集訓的乙個總結 個人認為集訓最有意義的是模擬賽吧,畢竟這麼多人一起。對於模擬賽略做分析?廢話較多 加粗的比較有價值?首先有幾次的模擬賽有些頹廢,後來想起來覺得挺惋惜的。有時候看一會覺得沒有什麼思路,就比較頹,覺得就這樣...
2019 7 22集訓總結
今天上午看了位運算的部分知識,複習了以前看過的遞迴,學習了快速冪,對書上的例題深入挖掘了一下,下午把 熟悉了好幾遍,看懂了位運算在快速冪中的應用。晚上打了比賽,讓我意識到自己和別人的差距,還有很長的路要走。堅持下去的才是勝利者,心態的問題,計畫的問題,都是我要不斷改進的問題。不管怎麼樣,放手去幹,下...