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