c++ - 与阴险的错误联盟

标签 c++ arrays

有一个问题,当我们想要遍历整个数组并将数组的每个值与数组中存在的数字进行比较时,比如 arr[0] 那么,为什么建议用 arr[0 初始化一个 int ],比如 int acomp =arr[0] 并将 acomp 与数组中存在的每个整数进行比较,而不是将数组中存在的每个整数与 arr[0] 进行比较? 例如,在下面的 union 代码中有人向我指出代码 2 比代码 1 好,但我不太清楚为什么。

int unionarr(int p, int q){            //Code 1
    for(int i=0;i<size;i++)
        if(arr[i]==arr[p])
            arr[i]=arr[q];}

int unionarr(int p, int q){            //Code 2
    int pid=arr[p];
    int qid=arr[q];
        for(int i=0;i<size;i++)
        if(arr[i]==pid)
            arr[i]=qid;}

最佳答案

这是一个正确性问题。 for 循环中的赋值可以修改数组值。您可能会修改在比较或赋值右侧使用的元素。这就是为什么您必须在进入循环之前保存它们。

关于c++ - 与阴险的错误联盟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44819365/

相关文章:

ios - 使用 Firebase 异步字典下载创建对象数组 (Swift)

arrays - Twig - 为什么它不允许我们设置对象/数组值?

php - 在同一个标​​题下合并术语,除非 new = 创建新标题 Wordpress 查询

c++ - 派生类派生特征

c++ - 多个查找集

c++ - 在访问引用类型的成员时总是使用左值是什么情况?

c++ - 为什么纯虚机制不考虑继承函数?

c++ - 如何在 C++ OpenCv 中使用 vector 点?

c++ - 有没有一种简单的方法可以在初始化后填充二维数组?

c++ - 定义不确定大小的数组