std :: find在旧式阵列上 [英] std::find on a legacy array

查看:60
本文介绍了std :: find在旧式阵列上的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在旧数组上执行 std :: find ,而又不创建新的 std :: vector / std :: array 来自现有的旧阵列?

How can i conduct std::find on a legacy array without making a new std::vector/std::array from an existing legacy array?

例如:

int ar[N];

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

& ar [N] 是用于检查什么都没有发现的情况的有效值吗?我可以确定我使用& ar [N] 正确无误,就像 std :: vector :: end()的类似物吗?

Is &ar[N] a valid value for checking the situation when nothing is found? Can I be sure i'm doing right using &ar[N] like an analog of std::vector::end() ?

推荐答案

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

If you are using c++11, you can use:

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

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

For c++98, you can use:

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

if (end == std::find(begin, end, value))
{
    // ...
}

这篇关于std :: find在旧式阵列上的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆