C ++在数组中查找int

时间:2017-04-04 17:20:24

标签: c++

所以我已经阅读了有关此内容的其他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*&)’

这甚至是接受的答案:How can I check if given int exists in array?

2 个答案:

答案 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'
}