在c语言中更新局部向量项
在c语言中更新局部向量项,c,pointers,mpi,C,Pointers,Mpi,int*my_vector有三个值通过MPI_Rec从主进程接收。现在我想从所有值中减去第一个值并存储。例如 my_vector = { 4,8,12} 在从所有元素中减去第一个元素即4之后,我需要得到这些值{048},并将它们更新/存储在我的_向量中 使用以下代码 for (i=0;i<=2;i++) { my_vector[i]=my_vector[i]-my_vector[0]; } for(i=0;i当然,因为这个代码 for (i=0;i<=2;i++) {
int*my_vector
有三个值通过MPI_Rec从主进程接收。现在我想从所有值中减去第一个值并存储。例如
my_vector = { 4,8,12}
在从所有元素中减去第一个元素即4之后,我需要得到这些值{048},并将它们更新/存储在我的_向量中
使用以下代码
for (i=0;i<=2;i++)
{
my_vector[i]=my_vector[i]-my_vector[0];
}
for(i=0;i当然,因为这个代码
for (i=0;i<=2;i++)
{
my_vector[i]=my_vector[i]-my_vector[0];
}
当然,因为这个代码
for (i=0;i<=2;i++)
{
my_vector[i]=my_vector[i]-my_vector[0];
}
这是因为my_vector[0]
在第一次迭代后获取值0
在循环之前复制我的_向量[0]:
tmp = my_vector[0];
for (i=0;i<=2;i++)
{
my_vector[i]=my_vector[i]-tmp;
}
for (i=1;i<=2;i++)
{
my_vector[i]=my_vector[i]-my_vector[0];
}
my_vector[0] = 0;
tmp=my_向量[0];
对于(i=0;i,这是因为my_vector[0]
在第一次迭代后获取值0
在循环之前复制我的_向量[0]:
tmp = my_vector[0];
for (i=0;i<=2;i++)
{
my_vector[i]=my_vector[i]-tmp;
}
for (i=1;i<=2;i++)
{
my_vector[i]=my_vector[i]-my_vector[0];
}
my_vector[0] = 0;
tmp=my_向量[0];
对于(i=0;i而言,虽然使用临时变量的“正常”正向循环可能是首选,但也可以选择反向循环:
for (i = 2; i >= 0; --i)
{
my_vector[i] -= my_vector[0];
}
虽然使用临时变量的“正常”正向循环可能是首选,但也可以选择反向循环:
for (i = 2; i >= 0; --i)
{
my_vector[i] -= my_vector[0];
}
你能试着创建一个调试器并向我们展示吗?同时告诉我们(或者更好的是展示)你是如何知道结果的。如果你还没有这样做,那么请。我还建议你阅读Eric Lippert的文章并学习如何使用调试器。你可以更新我的_向量[0]首先,将其值更改为0,因此您现在正在减去0。您可以尝试创建一个并向我们展示吗?还可以告诉我们(或者更好地展示)您是如何知道结果的。如果您还没有这样做,请告诉我们。我还建议您阅读Eric Lippert的文章并学习如何使用调试器。您可以更新我的_向量[0]首先,将其值更改为0,因此您现在要减去0。或者执行反向循环。@Someprogrammerdude-是的,反向循环肯定也是一种解决方案。一般来说,我更喜欢使用正常的正向循环,因为我发现它们更具可读性。也许您应该发布一个带有反向循环的答案。可能是OP更喜欢该解决方案。谢谢ked now..感谢您的快速响应…非常感谢..或者做一个反向循环。@Someprogrammerdude-是的,反向循环肯定也是一个解决方案。一般来说,我更喜欢使用正常的正向循环,因为我觉得它们更可读。也许您应该发布一个带有反向循环的答案。可能是OP更喜欢那个解决方案。谢谢现在rked..感谢您的快速响应…真的很感激..或者做一个反向循环。是的,我想到了,但我对反向循环的体验不是很满意(开始/结束条件错误,增量…:))更不用说:在复制偏移量和执行正向循环时,代码更清晰(可能更快)(缓存/预回迁)。内存/性能权衡一如既往:)或执行反向循环。是的,我想到了这一点,但我对反向循环的体验不是很满意(开始/结束条件错误,增量…:),更不用说:在复制偏移量和执行正向循环(缓存/预回迁)时,代码更清晰(可能更快).内存/性能权衡(一如既往:)