具有双参数的数组

时间:2012-06-17 19:09:53

标签: c++ arrays

我正在阅读一本书而且我遇到了一段代码,这本代码没有在书中解释过,但有些部分对我来说很混乱,大胆的部分,我想知道它是什么。

void Set::intersection(const Set& s1, const Set& s2)
{
    Set s;
    s.arrayA = new double[ s1.sizeA<s2.sizeA ? s1.sizeA : s2.sizeA];
    int i, j, k;
    while(i < s1.sizeA && j < s2.sizeA)
        if(s1.arrayA[i] < s2.arrayA[j])
            i++;
        else if (s1.arrayA[i] > s2.arrayA[j])
            j++;
        else
            s.arrayA[k++] = s1.arrayA[j++,i++]; // question is about this line

    s.sizeA= k;
    deleteA();
    copyA(s);  
}

它做了什么,为什么[]括号内有两个参数?提前谢谢。

1 个答案:

答案 0 :(得分:1)

括号内的两个参数是使用comma operator的表达式。这种表达的结果是最后一项的结果(j++, i++给i加1,而j也加1)。 因此s.arrayA[i++] = s1.arrayA[j++,i++];确实可以转换为等于j++, s.arrayA[i++] = s1.arrayA[i++];

此代码intersects用于设置s1s2。似乎代码建议对数组(实现集)进行排序。 代码正在s1.arrayAs2.arrayA上行,如果两个集合中都存在某个元素,则会将该元素放在s.arrayA中。