[问题] 指标初使化

楼主: wwwearn (小勇)   2014-07-15 14:50:11
最近想到了一个问题
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)};
这样写是有解决了静态宣告的缺点
但是这样写也只能在长度不高的地方而且基本宣告已经不同了
不知道有没有更好的写法??
作者: EdisonX (卡卡兽)   2014-07-15 14:56:00
vector 不行吗?另你讲的动作底层还是用你写的 for 去做.
作者: azureblaze (AzureBlaze)   2014-07-15 14:57:00
http://ideone.com/Dls7XQ 非常不建议这样做XD
楼主: wwwearn (小勇)   2014-07-15 15:04:00
我是想说尽可能别用到循环
作者: azureblaze (AzureBlaze)   2014-07-15 15:09:00
理由是?
楼主: wwwearn (小勇)   2014-07-15 15:11:00
如果可以以最短的行数写完的话看起来比较干净= =
作者: Fenikso (薪水小偷)   2014-07-15 15:13:00
那就用vector吧 XD
作者: EdisonX (卡卡兽)   2014-07-15 15:24:00
vector<int> v(nSize,-1); 不够短吗?
楼主: wwwearn (小勇)   2014-07-15 15:26:00
执行效率方面呢? 跟上面的方法比的化
作者: keeper7478 (the Servant of Cthulhu)   2014-07-15 15:42:00
不会有太大的差别,甚至可能会比较好
作者: LPH66 (-6.2598534e+18f)   2014-07-15 19:05:00
“肮脏事不灭定律”:你不想做的循环底层一定有人帮你做你只不过是把循环丢给底下的人而已就算是丢给 memset 它的底层还是循环, 所以别计较这种差别了至于效率...个人是觉得 memset 比较快上那么一些些其他则几乎没有差异, 但快那一些些不值得这样写...
作者: loveme00835 (发箍)   2014-07-15 19:18:00
看到C++却没有用RAII真的很伤心.. 你还是用malloc好了

Links booklink

Contact Us: admin [ a t ] ucptt.com