作者sa901119 (ads901119)
看板C_and_CPP
標題[問題] memset有辦法初始int array為全1嗎?
時間Sun Jan 24 09:14:17 2010
在C++ reference的網站中提到:
void * memset ( void * ptr, int value, size_t num );
Fill block of memory
Sets the first num bytes of the block of memory pointed by ptr to the
^^^^^^
specified value (interpreted as an unsigned char).
因此如果我寫:
int a[5][5];
memset(a, 1, sizeof(a));
成是應該會把a[][]設成一個5*5,
每個都是 00000001 00000001 00000001 00000001 (2進位)的array
也就是16843009, 而非我要的1
因此我在找有沒有辦法快速initialize一個二維陣列的方法 (用2層for感覺很慢)
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.252.248
推 alongalone:那你為啥不先清為0在assign 1到你要的位置..@@ 01/24 09:17
→ sa901119:因為我要全部都1啊.... 01/24 09:34
推 Bencrie:for迴圈還好吧 .. 又不是浮點計算 01/24 09:43
→ MOONRAKER:別再感覺了。 01/24 09:58
→ sa901119:好那我修改措詞 有沒有一個指令就能全部初始為非零任意值 01/24 10:27
→ yoco315:這老問題嚕,沒有,乖乖兩層迴圈 01/24 10:37
推 VictorTom:連續記憶體空間的話, 把MMX一類的指令集拿出來不知道有 01/24 11:12
→ VictorTom:沒有辦法XD 01/24 11:13
推 AstralBrain:fill(&a[0][0], &a[5][0], 1) 01/24 11:52
→ loveme00835:一層就好了吧 01/24 13:26
→ loveme00835:科科, 忘記是每個byte一個值... 01/24 13:36
→ johnhmj:你 sizeof 給錯了~ =_=! 01/24 17:41
→ johnhmj:它那個API只是給你方便而已,執行時不見得會比較快。 01/24 17:50
→ johnhmj:縮短C/C++程式碼不會令電腦加快執行程式。 01/24 17:52
→ johnhmj:XD 可以叫霹靂車幫你優化執行檔~ 01/24 17:56
→ sunneo:一個指令不見得會比多個指令快 要考慮指令週期 01/24 18:55
→ taiwan2000:請問用for會慢到哪去? 01/25 01:54
推 cplusplus:某階段是很容易想要鑽這些小事情的... 01/25 02:40
→ CrBoy:要是陣列真的很大 那就用memcpy 1->2->4->8->16->... 01/25 11:41
→ CrBoy:但是 這也不見得比較快阿XDDD 01/25 11:42