У меня проблема при сравнении значений в двух векторах.
Ниже приведен пример кода моей программы:
template <typename T> bool CompareVectors(std::vector<T> vector1, std::vector<T> vector2)
{
std::sort(vector1.begin(),vector1.end());
std::sort(vector2.begin(),vector2.end());
if (vector1.size() != vector2.size())
return false;
else
{
bool found = false;
std::vector<T>::iterator it;
std::vector<T>::iterator it2;
for (it = vector1.begin();it != vector1.end(); it++)
{
for(it2 = vector2.begin(); it2 != vector2.end(); it2++)
{
if(it == it2) // here i have to check the values in the itearators are equal.
{
found = true;
break;
}
}
if(!found)
return false;
else
found = false;
}
return true;
}
};
В этом примере кода мне необходимо сравнить два вектора,Для этого я отсортировал два вектора, используя std::sort()
.Поскольку тип данных в векторе является шаблоном (я использую объект класса в векторе), std::sort()
не работает должным образом.Т.е. иногда после сортировки два вектора дают различный порядок элементов.
Поэтому я не могу использовать также функцию std::equal()
.
Для альтернативного решения я использовал два итераторадля тви векторов.
Итерирование одного вектора и поиск этого элемента в другом векторе.Для этого сравнение итератора не может быть использовано.