Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在c语言中更新局部向量项_C_Pointers_Mpi - Fatal编程技术网

在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..感谢您的快速响应…真的很感激..或者做一个反向循环。是的,我想到了,但我对反向循环的体验不是很满意(开始/结束条件错误,增量…:))更不用说:在复制偏移量和执行正向循环时,代码更清晰(可能更快)(缓存/预回迁)。内存/性能权衡一如既往:)或执行反向循环。是的,我想到了这一点,但我对反向循环的体验不是很满意(开始/结束条件错误,增量…:),更不用说:在复制偏移量和执行正向循环(缓存/预回迁)时,代码更清晰(可能更快).内存/性能权衡(一如既往:)