массивы — Какой самый быстрый способ сравнения векторов в C ++?

Какой самый быстрый способ узнать, равны ли два вектора в c ++?

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

2

Решение

Не изобретайте велосипед. Ты можешь использовать std::equal от <algorithm>,

Это имеет следующую сложность:

Нет приложений соответствующего предиката, если InputIterator1 и InputIterator2 удовлетворяют требованиям итераторов произвольного доступа и last1 — first1! = Last2 — first2. В противном случае, самое большее min (last1 — first1, last2 — first2) применения соответствующего предиката.

Это то, что вы искали.
Смотрите документацию для получения более подробной информации.


Как уже упоминалось в комментариях, есть небольшая разница между operator== а также std::equal: первый не работает, если типы разные (например, std::vector<int> а также std::vector<double>), последний работает вместо этого.
Я попытался дать наиболее общее решение.
Если типы одинаковы, конечно operator== работает как шарм, как упоминается @ Jarod42.

3

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

Просто использовать operator == вектора:

std::vector<int> v1{1, 2, 3, 4}, v2{1, 2, 3, 4};
bool are_equal = (v1 == v2);
2

Оператор равенства ( == ) перегружен в C ++ Vector STL. Таким образом, вы можете легко сравнить те, которые сравнивают непосредственно, как сравнение двух целых

Чтобы сравнить строку и столбец матрицы, как вы сказали, используйте цикл и сравните строки и столбцы напрямую ==,

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