Сравнивая вектор с массивом, предполагая, что элементы находятся в другом порядке

Я хотел бы сравнить вектор с массивом, предполагая, что элементы находятся в другом порядке.
У меня есть структура, как показано ниже:

struct A
{
int index;
A() : index(0) {}
};

Размер вектора и массива одинаков:

std::vector<A> l_v = {A(1), A(2), A(3)};
A l_a[3] = {A(3), A(1), A(2)};

Функция для сравнения элементов:

bool isTheSame()
{
return std::equal(l_v.begin(), l_v.end(), l_a,
[](const A& lhs, const A& rhs){
return lhs.index == rhs.index;
});
}

Проблема в том, что моя функция вернет false, потому что элементы одинаковы, но не в том же порядке.
Решение состоит в том, чтобы отсортировать элементы в векторе и массиве до «std :: equal», но есть ли лучшее решение?

0

Решение

Использование сортировки было бы способом пойти. Сортировка вообще отличная идея. И, насколько я знаю, это приведет к лучшей производительности.

Замечания: Я бы рекомендовал передавать векторы в качестве аргументов. Вместо того, чтобы использовать переменные-члены. После этого это будет типичная функция, которая будет очень хорошо подходить для inline. Также вы можете рассмотреть возможность вывести его из класса и / или сделать статичным.

0

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector