C ++: сравнение двух векторов - PullRequest
67 голосов
/ 06 июня 2011

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

if (vector1 == vector2)
    DoSomething();

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

Ответы [ 4 ]

63 голосов
/ 29 сентября 2012

Ваш код (vector1 == vector2) - правильный синтаксис C ++. Для векторов есть оператор ==.

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

Вот пример:

using namespace std;

if( equal(vector1.begin(), vector1.end(), vector2.begin()) )
    DoSomething();
26 голосов
/ 06 июня 2011

Проверка std::mismatch метод C ++.

сравнение векторов обсуждалось на форуме DaniWeb , а также ответил .

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

Проверьте ниже ТАК сообщение. будет полезно для вас. они достигли того же с другим методом 2.

Сравните два вектора C ++

2 голосов
/ 20 марта 2018

Согласно обсуждению здесь вы можете напрямую сравнить два вектора, используя

==

if (vector1 == vector2){
   //true
}
else{
   //false
}
1 голос
/ 06 июня 2011

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

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

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

...