所以我已经阅读了有关此内容的其他Stack帖子,他们都建议我使用find
。我正在尝试这个,但它对我不起作用。
bool findInArray(int number, int array[]){
// Finds if the number is in the array
bool exists = find(begin(array), end(array), number) != end(array);
return exists;
}
但我一直收到以下错误:
error: no matching function for call to ‘begin(int*&)’
答案 0 :(得分:8)
您需要一个模板:
template <std::size_t N>
bool findInArray(int number, const int (&array)[N]) {
// Finds if the number is in the array
return std::find(std::begin(array), std::end(array), number) != std::end(array);
}
你还需要通过lvalue传递数组,因为你无法在C ++中通过prvalue传递数组,而是数组会衰减为指向其第一个元素的指针,从而丢失了大小信息。
答案 1 :(得分:1)
如果您不知道模板并寻找此问题的其他答案,请使用STL算法。
findInArray(5, a, sizeof(a)/sizeof(a[0]));
从主要来说,你可以打电话:
# Empty collection for errors
$Errors = @()
# Define input script
$inputScript = 'Do-Something -Param 1,2,3,'
[void][System.Management.Automation.Language.Parser]::ParseInput($inputScript,[ref]$null,[ref]$Errors)
if($Errors.Count -gt 0){
Write-Warning 'Errors found'
}