Есть ли способ сравнить два вектора?
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 и удалении, если найдено. Я знаю, что это звучит ужасно, но почему я не пишу никаких стандартных библиотек С++ в ближайшее время.
На самом деле, сначала просто отсортируйте их.