C ++ проверяет, существует ли элемент в массиве - PullRequest
6 голосов
/ 31 января 2012

Я нашел много подобных тем, но это было слишком сложно для меня.

Как проверить, существует ли элемент в массиве?

сначала я объявляю массив и помещаю в него значения

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

, а затем с другим for I 'Я хотел бы проверить, есть ли какой-либо элемент, который существует в другом массиве, в массиве skirt[];

Есть ли способ написать что-то вроде этого?

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

Ответы [ 3 ]

5 голосов
/ 31 января 2012

Лучший способ сделать это - использовать стандартный алгоритм, а не рукописный цикл:

if (std::find_first_of(
        skirt, skirt + skirt_size,
        skaiciai, skaiciai + skaiciai_size)
    != skirt + skirt_size)
{
    //skirt contained an element from skaiciai
}
3 голосов
/ 31 января 2012

Цикл:

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 голосов
/ 31 января 2012

Вы можете просто использовать алгоритм std :: count.

auto counter = std::count( skirt, skirt+skirt_size );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...