由于我的array1和array2定义,我的代码无法构建。我找不到问题。 错误代码是 33:54:错误:初始化程序无法确定'array1'的大小 33:54:错误:必须使用大括号括起来的初始化程序来初始化数组
#include <iostream>
#include <string>
#include <algorithm>
}
}
int main()
{
int unSorted1[] = {1,49,2,5,8,1,56,32,65,7,65,23,5};
int unSorted2[] = {9,4,5,3,7,8,1,56,45,32,78,22};
int size1 = sizeof(unSorted1)/sizeof(unSorted1[0]);
int size2 = sizeof(unSorted2)/sizeof(unSorted2[0]);
int array1[] = std::sort(unSorted1,unSorted1+size1);
int array2[] = std::sort(unSorted2,unSorted2+size2);
// Function calling
intersectionArrays(array1, array2, size1, size2);
return 0;
}
答案 0 :(得分:1)
std::sort
返回void
。由于它没有返回值,因此不能用于初始化任何东西。 std::sort
修改输入范围。
此外,数组只能由元素列表初始化。无法从另一个数组 1 初始化一个数组,我怀疑您期望std::sort
返回。
您可以简单地调用intersectionArrays(unSorted1, unSorted2, size1, size2);
,因为这些数组现在在调用std::sort
之后进行排序。也许可以给数组起个更好的名字,因为它们在整个程序中并不是未排序的。如果要保留数组的未排序副本,则可以使用std::partial_sort_copy
代替std::sort
。尽管名称中“部分”,它仍可用于对整个范围进行排序复制。
1 但是,进行这种初始化有一个技巧。数组可以是类的成员,而包装器类的隐式副本构造函数使其可以从另一个实例构造(也可以赋值)。对于此类数组包装类,有一个标准模板。它称为std::array
。
P.S。建议不要使用sizeof(unSorted1)/sizeof(unSorted1[0])
,而建议使用std::size(unSorted1)
。而不是unSorted1+size1
。