C++ 两个数组的求交函数,结果不好

C++ 两个数组的求交函数,结果不好,c++,arrays,intersection,C++,Arrays,Intersection,我编写了这个函数,它将两个数组(具有各自的长度)作为参数,并返回另一个数组,其中的元素在两个数组中相同。但是,它给了我更多的数字 void intersection(int vector1[], int length1, int vector2[], int length2, int vectorResult[], int& resultLength) { int index = 0; for (int i = 0; i < length1; i++) { for (int

我编写了这个函数,它将两个数组(具有各自的长度)作为参数,并返回另一个数组,其中的元素在两个数组中相同。但是,它给了我更多的数字

void intersection(int vector1[], int length1, int vector2[], int length2, int vectorResult[], int& resultLength) {
int index = 0;
for (int i = 0; i < length1; i++) {
    for (int j = 0; j < length2; j++) {
        if (vector1[i] == vector2[j]) {
            vectorResult[index] = vector2[j];
            resultLength++;
            index++;
        }
    }

}
}
相反,我得到:

Vector1: [1,3,5,7,9]
Vector2: [9,10,11,12,13,14]
Result: [9,2,3,4,5,0,0]

假设在调用
intersection
之前对两个数组进行了排序,我会选择:

void intersection(int vector1[], int length1, int vector2[], int length2, int vectorResult[], int &resultLength) {
    resultLength = std::distance(vectorResult,
                                 std::set_intersection(vector1, vector1 + length1,
                                                       vector2, vector2 + length2,
                                                       vectorResult));
}

你调试代码了吗?给定您应该提供的示例输入,预期行为和实际行为是什么?我将使用标准库函数,我只能使用iostream库。如何调用您的函数?我猜您从未将
resultLength
设置为
0
。调用函数后是否打印了
resultLength
?它是否具有预期的值
1
?你的功能确实有效,
void intersection(int vector1[], int length1, int vector2[], int length2, int vectorResult[], int &resultLength) {
    resultLength = std::distance(vectorResult,
                                 std::set_intersection(vector1, vector1 + length1,
                                                       vector2, vector2 + length2,
                                                       vectorResult));
}