[問題] 指標初使化

看板C_and_CPP作者 (小勇)時間10年前 (2014/07/15 14:50), 編輯推噓2(2013)
留言15則, 7人參與, 最新討論串1/1
最近想到了一個問題 int *iArray=new int[100]; memset(iArray,0,sizeof(int)*100); 這樣就可以完成了iArray清0的工作 可是如果我希望每個整int都為-1呢? memset好像是以每個位元組做為間隔為單位的好像不行? for(int i=0;i<100;i++) { iArray[i]=-1; } 感覺這樣寫又有點麻煩 後來有想了一下 int iTemp[]={-1,-1,-1}; iArray=iTemp; 發現是可以的但是只能用在長度不高的地方 而且因為是靜態宣告離開函式應該就自動釋放了 int *iArray[]={new int(-1),new int(-1),new int(-1)}; 這樣寫是有解決了靜態宣告的缺點 但是這樣寫也只能在長度不高的地方而且基本宣告已經不同了 不知道有沒有更好的寫法?? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.224.47.220 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1405407013.A.EC1.html

07/15 14:56, , 1F
vector 不行嗎?另你講的動作底層還是用你寫的 for 去做.
07/15 14:56, 1F

07/15 14:57, , 2F
http://ideone.com/Dls7XQ 非常不建議這樣做XD
07/15 14:57, 2F

07/15 15:04, , 3F
我是想說盡可能別用到迴圈
07/15 15:04, 3F

07/15 15:09, , 4F
理由是?
07/15 15:09, 4F

07/15 15:11, , 5F
如果可以以最短的行數寫完的話看起來比較乾淨= =
07/15 15:11, 5F

07/15 15:13, , 6F
那就用vector吧 XD
07/15 15:13, 6F

07/15 15:24, , 7F
vector<int> v(nSize,-1); 不夠短嗎?
07/15 15:24, 7F

07/15 15:26, , 8F
執行效率方面呢? 跟上面的方法比的化
07/15 15:26, 8F

07/15 15:42, , 9F
不會有太大的差別,甚至可能會比較好
07/15 15:42, 9F

07/15 19:05, , 10F
「骯髒事不滅定律」:你不想做的迴圈底層一定有人幫你做
07/15 19:05, 10F

07/15 19:06, , 11F
你只不過是把迴圈丟給底下的人而已
07/15 19:06, 11F

07/15 19:07, , 12F
就算是丟給 memset 它的底層還是迴圈, 所以別計較這種差別了
07/15 19:07, 12F

07/15 19:12, , 13F
至於效率...個人是覺得 memset 比較快上那麼一些些
07/15 19:12, 13F

07/15 19:12, , 14F
其他則幾乎沒有差異, 但快那一些些不值得這樣寫...
07/15 19:12, 14F

07/15 19:18, , 15F
看到C++卻沒有用RAII真的很傷心.. 你還是用malloc好了
07/15 19:18, 15F
文章代碼(AID): #1JnCybx1 (C_and_CPP)