std :: find在遗留阵列上

fog*_*bit 11 c++ stl

我怎样才能进行std::find的传统阵列上没有作出新的std::vector/ std::array从现有的传统阵列

例如:

int ar[N];

if ( std::find(ar, ar + N, value) != &ar[N] ){ /**/ }
Run Code Online (Sandbox Code Playgroud)

&ar[N]没有找到任何内容时检查情况是否有效?我可以肯定我正确使用&ar[N]像模拟一样std::vector::end()吗?

utn*_*tim 21

如果您使用的是c ++ 11,则可以使用:

int arr[N];
if (std::end(arr) == std::find(std::begin(arr), std::end(arr), value))
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

对于c ++ 98,您可以使用:

int arr[N];
int *begin = arr;
int *end = begin + N;

if (end == std::find(begin, end, value))
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

  • 编写自己版本的`std :: begin`和`std :: end`也不难. (3认同)