我编写了这个函数,它将两个数组(具有各自的长度)作为参数,并返回另一个数组,其中两个数组中的元素相同。但是,它给了我更多的数字。
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]
相反,我得到:
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));
}