C++检查数组中元素是否存在

6

我发现很多类似的主题,但对我来说有点太复杂了。

如何检查元素是否存在于数组中?

首先,我声明一个数组并将值放入其中。

for(int l=0;l<=21;l++){
        skirt[l]=l;
    }

然后用另一个 for 循环,我想检查其他数组中存在的任何元素是否在数组 skirt[] 中;

有没有办法像这样编写它?

for(int k=0;k<=n;k++){
    if(skaiciai[k]!=skirt[k]){
        counter++;
    }
}
3个回答

5

最好的方法是使用标准算法,而不是手写循环:

if (std::find_first_of(
        skirt, skirt + skirt_size,
        skaiciai, skaiciai + skaiciai_size)
    != skirt + skirt_size)
{
    //skirt contained an element from skaiciai
}

3
循环:
for(int k=0;k<=n;k++){
    if(skaiciai[k]!=skirt[k]){
        counter++;
    }
}

仅会比较数组中相同索引处的元素。需要使用嵌套的for循环,外层for循环迭代一个数组中的元素,内层for循环迭代另一个数组中的元素:

for (int k_skirt = 0; k_skirt <= n; k_skirt++)
{
    for (int k_skaiciai = 0; k_skaiciai <= n; k_skaiciai++)
    {
        if(skaiciai[k_skaicia] == skirt[k_skirt]){
            counter++;
        }
    }
}

3
你可以直接使用 std::count 算法。
auto counter = std::count( skirt, skirt+skirt_size );

1
这段代码无法编译,因为你省略了任何值或谓词来进行比较;没有std::count()重载只接受2个参数,因为它需要第三个参数告诉它要计数的是什么。而如何使用嵌套进行计数才是问题所在。 - underscore_d

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接