目前,当我尝试为数组赋值时,我在# <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
答案 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);