Подтвердить что ты не робот

С++: сравнение двух векторов

Есть ли способ сравнить два вектора?

if (vector1 == vector2)
    DoSomething();

Примечание: В настоящее время эти векторы не сортируются и содержат целые значения.

4b9b3361

Ответ 2

Ваш код (vector1 == vector2) является правильным синтаксисом С++. Для векторов существует оператор ==.

Если вы хотите сравнить короткий вектор с частью более длинного вектора, вы можете использовать оператор equal() для векторов. (здесь)

Вот пример:

using namespace std;

if( equal(vector1.begin(), vector1.end(), vector2.begin()) )
    DoSomething();

Ответ 3

Если им действительно нужно оставаться несортированными (чего они действительно не делают... и если вы имеете дело со сотнями тысяч элементов, тогда я должен спросить, почему вы будете сравнивать такие векторы), вы можете взломать вместе метод сравнения, который работает с несортированными массивами.

Единственный способ сделать это - создать временный vector3 и сделать вид set_intersection, добавив к нему все элементы vector1, затем выполнив поиск для каждого отдельного элемента vector2 в vector3 и удалении, если найдено. Я знаю, что это звучит ужасно, но почему я не пишу никаких стандартных библиотек С++ в ближайшее время.

На самом деле, сначала просто отсортируйте их.