为数组赋值:memset vs for循环

时间:2018-02-06 14:11:02

标签: c++11 memset

目前,当我尝试为数组赋值时,我在# <im> is a 2d floating point numpy array # <w,h> are the width and hight of <im> pdt = np.rint(np.add(pix[:,None,:], np.multiply(depthValOfU[:,None], features[:,0]))).astype(int) d_two = np.zeros(2000*500) pdt = np.reshape(pdt, (2000*500, 2)) np.put(d_two, np.where(np.logical_or.reduce((pdt[:,0] < 0, pdt[:,0] > w, pdt[:,1] < 0, pdt[:,1] > h))), self.const) zero_ind = np.where(d_two < 1000) np.put(d_two, zero_ind, im[pdt[zero_ind,0], pdt[zero_ind,1]]) 和for循环之间遇到问题。当我尝试用for循环替换memset时,我的程序输出不同。当我尝试memset时,我的输出为memset

5

但是当我尝试用for循环替换bool visited[21][21]; int ans[21][21]; memset(ans,10000,sizeof(ans)); memset(visited,0,sizeof(visited)); 时,输出为memset

-1

这里bool visited[21][21]; int ans[21][21]; for(int a1=0;a1<21;a1++) { for(int b1=0;b1<21;b1++) { ans[a1][b1]=10000; } } for(int a1=0;a1<21;a1++) { for(int b1=0;b1<21;b1++) { visited[a1][b1]=0; } } 给出了正确的输出但是循环不是。任何人都可以解释这个的原因或者用for循环替换memset的方法?

这是我输入的完整代码

memset

1 个答案:

答案 0 :(得分:1)

你刚才发现,你不需要在C ++ it is error-prone中使用memset

修正:

bool visited[21][21] = {}; // zero-initialize

int ans[21][21]; // uninitialized
std::fill_n(*ans, sizeof ans / sizeof **ans, 10000);