Как сравнить 2 вектора и удалить элементы из второго?

Эти решения будут пробегать по всем элементам из newVec для каждого элемента в myVec. Уже при размере в 1000 элементов для каждого, надо будет сделать 1 000 000 сравнений. ВЫход — использовать set или unordered_set:
namespace std < //для unordered_set template<>struct hash < std::size_t operator()(const A &a) < return std::hash()(a.id); > > //для std::set template<> struct less < bool operator()(const A &lha, const A &rha) < return lha.id < rha.id; >> > std::unordered_set newSet; //std::set newSet newSet.insert(a); newSet.insert(b); newSet.insert(d); std::erase( std::remove_if(myVec.begin(), myVec.end(), [&newSet](const A &a) < return newSet.find(a) == newSet.end(); >), myVec.end());
Как сравнить два вектора в R (с примерами)
Вы можете использовать следующий базовый синтаксис для сравнения двух векторов в R:
#check if two vectors are identical identical(vector_1, vector_2) #display items that are in both vectors intersect(vector_1, vector_2) #display items that are only in first vector, but not in second vector setdiff(vector_1, vector_2)
В следующих примерах показано, как использовать этот синтаксис на практике.
Пример 1. Проверка идентичности двух векторов
В следующем коде показано, как использовать функцию идентичных() для проверки идентичности двух векторов:
#define vectors vector_1
Два вектора не идентичны, поэтому возвращается значение FALSE .
Пример 2: найти элементы, которые существуют в обоих векторах
В следующем коде показано, как использовать функцию intersect() для отображения элементов, существующих в обоих векторах:
#define vectors vector_1
Отображаются три элемента, существующие в обоих векторах.
Мы также можем использовать функцию length() , если просто хотим узнать, сколько элементов существует в обоих векторах:
#find how many items exist in both vectors length(intersect(vector_1, vector_2)) [1] 3
В обоих векторах существует три элемента.
Пример 3: поиск элементов, которые существуют только в одном векторе
В следующем коде показано, как использовать функцию setdiff() для отображения элементов, существующих в первом векторе, но не во втором:
#define vectors vector_1
В первом векторе существует ровно один элемент, которого нет во втором векторе.
Мы можем поменять местами два вектора, чтобы идентифицировать элементы, которые существуют во втором векторе, но не в первом:
#define vectors vector_1
Во втором векторе существуют два элемента, которых нет в первом.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в R:
Как сравнить значения из вектора структур
Всем еще раз здрасте). Сейчас попробую более дитально описать проблему. Изучаю с++ порядка 4-5 месяцем. И в основном это как и у всех начинающих ввод вывод в консоле не сложных арефметический действий. Для того что бы хоть как-то увидеть то чему я научился решил попробывать реализовать свои знание с некой графикой. По гуглил "Графические библиотека с++", выбрав SFML и думаю что все могу начал писать типа игру. Она не будет никуда выыносится, так чисто для себя, что бы понять что я вообще могу. Есть файл Map.h который считывает файл tmx (xml разметка). В нем есть група обьектов которые хранят значаения x, y, width, height.
Я сделал структура в которой есть эти 4 параметра.
struct Object < vector obj_x; //Начало обьекта по Х vector obj_y; //Начало обьекта по У vector obj_width; //Длина обьекта по Х vector obj_height; //Длина обьекта по У >;
Структуру засунул в вектор.
vector vector_object;
И получается у меня что каждый новый тег
записывается в структуру, а структура записывается в вектор. В этом примере у меня получается 6 обьектов. При тесте что и как записалось все хорошо, тоесть:
for (int i = 0; i < vector_object.size(); i++) < for (int q = 0; q < vector_object[i].obj_x.size(); q++) < cout cout
Так же у меня есть герой, который хранит координаты х и у. Я хочу сделать проверку что бы игрок НЕ могу заходить на координаты обьекта, что-то типо этого:
for (int i = 0; i < vector_object.size(); i++) < for (int q = 0; q < vector_object[i].obj_x.size(); q++) < if (user_x >vector_object[i].obj_x[q] && user_x < vector_object[i].obj_width[q]) < move = false; >> >
Но тут проблемма что я не могу сравнить значение из вектора[i] обьекта [q] с координатой игрока. Якобы нет перегруженного оператора сравнения. Вот тут мне и нехватает знаний. Подскажите, куда копать, и что читать) Так же как вариант можно сделать динамический масив, под групу координат отдельный масив, к примеру:
float *x = new float[size]; float *y = new float[size]; float *width = new float[size]; float *height = new float[size];
Как сравнить два вектора? Разной размерности?
Прошу помочь с поиском метода сравнения.
Имеется
1) набор показаний некоторого датчика на длительном интервале времени, Показания снимаются поминутно.
2) Некий шаблон показаний, сообщающий о критичной ситуации, представляющий собой набор значений датчика за 5 минут, т.е. (val1,val2,val3,val4,val5)
Критичная ситуация - когда показания датчика за последние 5 минут совпадают с шаблоном с некоторой погрешностью. Для сравнения данных за последние 5 минут с шаблоном использую метод наименьших квадратов (МНК).
Однако ситуация аналогичная шаблону может воспроизвестись и на 4 минутах и на 6и - когда одно из шаблонных значений val будет короче\длительнее по времени, например.
Вопрос - каким образом можно сравнить вектора размерности N и N-1 или N и N-2 по аналогии с МНК?
- Вопрос задан более трёх лет назад
- 2253 просмотра