C ++ Сравнить первый и второй элемент для всех пар в контейнере

У меня есть такой вектор пары:

std::vector < std::pair < int /*Val1*/, int /*Val2*/ > > myVector;

Каков эффективный способ сравнения для каждой пары в myVector, первый и второй элементы пары (Val1 и Val2) одинаковы или нет.

Единственный способ, который я мог придумать, - это ...

bool IsFirstAndSecondSame(vector<pair<T, T>> myVector)
{
    for(auto valuePair : myVector)
    {
       if(valuePair.first != valuePair.second)
           return false'
    }
    return true;
}

Хотя в примере я использовал пару целых чисел, вопрос заключается в том, что любая пара имеет первый и второй элементы одного типа.


person adsarode    schedule 16.07.2017    source источник
comment
vector> myVector ??? - Вы не можете получить помощь с тем, как вы задали этот вопрос, код не имеет смысла. Что такое cosnt в C ++? ... Проверьте правописание. Приложите все усилия, задавая вопросы ... И вы получите быстрые ответы. Разместите действительный фрагмент кода. Опубликуйте минимальный, полный и проверяемый пример   -  person WhiZTiM    schedule 16.07.2017
comment
Используйте std::all_of и подходящую функцию.   -  person molbdnilo    schedule 16.07.2017


Ответы (1)


Хотя в примере я использовал пару целых чисел, вопрос заключается в том, что любая пара имеет первый и второй элементы одного типа.

Вероятно, вы спрашиваете об использовании такой шаблонной функции:

template<typename T>
bool IsFirstAndSecondSame(const vector<pair<T, T>>& myVector) // const
                                                              // ^^^^^
                                                              // makes no sense 
                                                              // with free functions
{
    for(const auto& valuePair : myVector)
    {
       if(valuePair.first != valuePair.second)
           return false'
    }
    return true;
}
person user0042    schedule 16.07.2017