看板 C_and_CPP 關於我們 聯絡資訊
在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