Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
430 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,627
Записей в блоге: 14

Как сравнить два std::vector?

07.09.2018, 08:33. Показов 2300. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Если написать так:
C++
1
if (vector1 == vector2)
- генерируется длинный ряд ошибок компиляции:

1>d:\program files\microsoft visual studio\2017\community\vc\tools\msvc\14.1 5.26726\include\xutility(3084): error C2672: "operator __surrogate_func": не найдена соответствующая перегруженная функция
1>d:\program files\microsoft visual studio\2017\community\vc\tools\msvc\14.1 5.26726\include\xutility(3112): note: выполняется компиляция ссылки на экземпляр шаблон функции "bool std::_Equal_unchecked1<_InIt1,_InIt2,_Pr >(_InIt1,const _InIt1,_InIt2,_Pr,std::false_type)"
1> with
1> [
1> _InIt1=const three_values *,
1> _InIt2=const three_values *,
1> _Pr=std::equal_to<void>
1> ]
1>d:\program files\microsoft visual studio\2017\community\vc\tools\msvc\14.1 5.26726\include\xutility(3125): note: выполняется компиляция ссылки на экземпляр шаблон функции "bool std::_Equal_unchecked<const three_values*,const three_values*,_Fn>(const _InIt1,const _InIt1,const _InIt2,_Pr)"
1> with
1> [
1> _Fn=std::equal_to<void>,
1> _InIt1=const three_values *,
1> _InIt2=const three_values *,
1> _Pr=std::equal_to<void>
1> ]
1>d:\program files\microsoft visual studio\2017\community\vc\tools\msvc\14.1 5.26726\include\xutility(3166): note: выполняется компиляция ссылки на экземпляр шаблон функции "bool std::equal<_InIt1,_InIt2,std::equal_to<v oid>>(const _InIt1,const _InIt1,const _InIt2,_Pr)"
1> with
1> [
1> _InIt1=std::_Vector_const_iterator<std:: _Vector_val<std::_Simple_types<three_val ues>>>,
1> _InIt2=std::_Vector_const_iterator<std:: _Vector_val<std::_Simple_types<three_val ues>>>,
1> _Pr=std::equal_to<void>
1> ]
1>d:\program files\microsoft visual studio\2017\community\vc\tools\msvc\14.1 5.26726\include\vector(1988): note: выполняется компиляция ссылки на экземпляр шаблон функции "bool std::equal<std::_Vector_const_iterator<s td::_Vector_val<std::_Simple_types<_Ty>> >,std::_Vector_const_iterator<std::_Vect or_val<std::_Simple_types<_Ty>>>>(const _InIt1,const _InIt1,const _InIt2)"
1> with
1> [
1> _Ty=three_values,
1> _InIt1=std::_Vector_const_iterator<std:: _Vector_val<std::_Simple_types<three_val ues>>>,
1> _InIt2=std::_Vector_const_iterator<std:: _Vector_val<std::_Simple_types<three_val ues>>>
1> ]
1>d:\***\executions.h(2342): note: выполняется компиляция ссылки на экземпляр шаблон функции "bool std::operator ==<three_values,std::allocator<_Ty>>(con st std::vector<_Ty,std::allocator<_Ty>> &,const std::vector<_Ty,std::allocator<_Ty>> &)"
1> with
1> [
1> _Ty=three_values
1> ]
1>d:\program files\microsoft visual studio\2017\community\vc\tools\msvc\14.1 5.26726\include\xutility(3084): error C2893: Сбой при специализации функции-шаблона "unknown-type std::equal_to<void>::operator ()(_Ty1 &&,_Ty2 &&) const"
1>d:\program files\microsoft visual studio\2017\community\vc\tools\msvc\14.1 5.26726\include\xutility(3084): note: Со следующими аргументами шаблона:
1>d:\program files\microsoft visual studio\2017\community\vc\tools\msvc\14.1 5.26726\include\xutility(3084): note: "_Ty1=const three_values &"
1>d:\program files\microsoft visual studio\2017\community\vc\tools\msvc\14.1 5.26726\include\xutility(3084): note: "_Ty2=const three_values &"
Как это исправить?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.09.2018, 08:33
Ответы с готовыми решениями:

Как передать целочисленную матрицу типа std::vector<std::vector<int> > в функцию?
Здравствуйте. Почитал на форуме, но так и не понял что я делаю не так. Имеется двумерный вектор. Размера .. Нужно его передать в...

На основе исходного std::vector<std::string> содержащего числа, создать std::vector<int> с этими же числами
подскажите есть вот такая задача. Есть список . Создать второй список, в котором будут все эти же числа, но не в виде строк, а в виде...

Как изменять размер std::vector<std::vector>?
Здравствуйте, как нужно изменять размер std::vector&lt;std::vector&gt; например: std::vector&lt;std::vector&lt;float&gt;&gt; data; ...

5
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
07.09.2018, 08:53
Etyuhibosecyu, что у вас в векторе?
Оператор == переопределите, для элемента.
0
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
430 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,627
Записей в блоге: 14
07.09.2018, 09:02  [ТС]
Оператор == переопределен. Если его вынести за структуру, возникает гора других ошибок.
0
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
07.09.2018, 09:11
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Если его вынести за структуру, возникает гора других ошибок.
У меня все нормально.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <vector>
 
struct abcd {
    int p;        
};
 
bool operator==(const abcd &op1, const abcd &op2) {
        return op1.p == op2.p;
}
 
int main() { 
    std::vector<abcd> a = {{1}, {2}, {3}, {4} };
    std::vector<abcd> b = {{1}, {2}, {3}, {4} };
    std::cout << (a == b);
    return 0;
}
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
08.09.2018, 00:29
Etyuhibosecyu, перегруженный оператор должен иметь спецификатор const. Его отсутствие говорит о том, что твоя функция может по ходу работы изменить содержимое объекта. У std::vector оператор сравнения объявлен как const, так что он не сможет вызвать твой оператор, который условно может изменить объект.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12938 / 6805 / 1821
Регистрация: 18.10.2014
Сообщений: 17,224
08.09.2018, 09:42
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Оператор == переопределен. Если его вынести за структуру, возникает гора других ошибок.
Байки про код, который якобы где-то есть, тут никому не интересны. Ошибка в вашем коде. Показывайте код и не морочьте людям голову рассказами про некие "горы ошибок".
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.09.2018, 09:42
Помогаю со студенческими работами здесь

Вывести значения std::vector<std::vector<int*> >
Подскажите, как вывести значения? const size_t row = 3; const size_t col = 3; std::vector&lt;std::vector&lt;int*&gt; &gt; imatrix; ...

Std::vector<std::pair<std::vector<int>::iterator, std::vector<int>::iterator>
Вопрос по вектору. Допустим есть вектор, std::vector&lt;int&gt; vec; на каком - то этапе заполнения я ставлю закладку итератора, ...

Std::vector/QVector в классе или std::vector/QVector классов?
Доброе время суток! Собственно вопрос в самой теме, есть некий класс class WorkJornal { private: string manager; ...

Как сложить два vector и записать в третий vector ?
Не получается сложить два вектора по элементно и записать в третий . Складываю уже переведенные числа из десятичной в восьмеричной системе...

Реализация класса MyString. Стандартная библиотека, std::string, std::vector
как добавить реализацию конкатенации строк через перегрузку оператора &quot;+=&quot; в классе MyString и почему ошибка выдается???#include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru