Есть ли способ сравнить два вектора?
if (vector1 == vector2)
DoSomething();
Примечание: В настоящее время эти векторы не сортируются и содержат целые значения.
Есть ли способ сравнить два вектора?
if (vector1 == vector2)
DoSomething();
Примечание: В настоящее время эти векторы не сортируются и содержат целые значения.
Отметьте std::mismatch
метод С++.
сравнение векторов обсуждалось на форуме DaniWeb, а также ответил.
Проверьте нижнюю колонку SO. поможет вам. они достигли того же с использованием метода различной-2.
Ваш код (vector1 == vector2
) является правильным синтаксисом С++. Для векторов существует оператор ==
.
Если вы хотите сравнить короткий вектор с частью более длинного вектора, вы можете использовать оператор equal()
для векторов. (здесь)
Вот пример:
using namespace std;
if( equal(vector1.begin(), vector1.end(), vector2.begin()) )
DoSomething();
Если им действительно нужно оставаться несортированными (чего они действительно не делают... и если вы имеете дело со сотнями тысяч элементов, тогда я должен спросить, почему вы будете сравнивать такие векторы), вы можете взломать вместе метод сравнения, который работает с несортированными массивами.
Единственный способ сделать это - создать временный vector3
и сделать вид set_intersection
, добавив к нему все элементы vector1
, затем выполнив поиск для каждого отдельного элемента vector2
в vector3
и удалении, если найдено. Я знаю, что это звучит ужасно, но почему я не пишу никаких стандартных библиотек С++ в ближайшее время.
На самом деле, сначала просто отсортируйте их.