У меня есть два вектора A и B. A содержит данные в виде строки таблицы на основе некоторого первичного ключа, например row_id. Vector B также содержит некоторые данные также в виде строки другой таблицы, основанной на том же ключе. Теперь мое требование состоит в том, чтобы выбрать только те данные из вектора A, когда row_id обоих векторов A & B соответствует другим функциям. Как это можно достичь?Перемещение требуемых данных из одного вектора в другой вектор
ответ
Если A Данные & B, как:
struct X{
int row_id;
int data;
}
Тогда вы можете, вероятно, использовать std::set_intersection как следующие
Здесь C будет вектор, содержащий данные из & B, где row_id
матчи
std::vector<X> A,B,C;
//Sort A,B based on row_id use std::sort with custom comparator
std::set_intersection (A.begin(), A.end(), B.begin(), B.end()
std::back_inserter(C),
[](const X& a, const X& b) {
return a.row_id < b.row_id
});
@POW Для этого нужны отсортированные векторы, и вам не хватает B.end(). –
@ DieterLücking обновлено спасибо – P0W
@POW Еще одна вещь: используйте <для сравнения id (C++ использует меньше, чем для эквивалентности) –
- 1. Перемещение элементов из одного вектора в другой вектор в C++
- 2. Перемещение содержимого одного вектора на другой
- 3. Перемещение вектора объектов на другой вектор
- 4. копирование одного сегмента вектора в другой вектор
- 5. Скопируйте элементы из одного вектора в другой вектор
- 6. Добавление одного вектора в другой конец И сортировка одного вектора
- 7. Подсчитайте появление значений одного вектора в другой вектор
- 8. Копирование элементов одного вектора в другой
- 9. Получить индексы одного вектора в другой вектор, но сохраняющий ордена
- 10. Перемещение данных одного объекта в другой
- 11. Перемещенные элементы из одного вектора в другой
- 12. Копирование значений из одного вектора в другой (из книги)
- 13. Перемещение элемента из одного DIV в другой
- 14. Перемещение предмета из одного списка в другой
- 15. Перемещение элемента из одного массива в другой
- 16. Перемещение строки из одного списка в другой
- 17. Перемещение файлов из одного подкаталога в другой
- 18. Redis: перемещение данных из индекса в другой
- 19. прохождение вектора из одного класса в другой в качестве объекта
- 20. Добавление вектора в другой вектор без цикла
- 21. хранить элементы вектора в другой вектор
- 22. Вставка вектора unique_ptr в другой вектор
- 23. Ошибка при копировании вектора в другой вектор
- 24. Как скопировать содержимое из одного векторного вектора в другой?
- 25. Передача из вектора в вектор
- 26. Перемещение одного столбца в другой
- 27. Изменение вектора элементов из одного класса в другой
- 28. Создать новый вектор из одного вектора манипулируя факторов
- 29. Запрос о копировании из одного вектора в другой вектор в Clojure
- 30. Каков тип вектора, который содержит другой вектор?
Я предлагаю вам попробовать сами или, по крайней мере, google (по-настоящему), а затем прийти к нам, если вы можете показать код, который не работа, и вы не знаете, почему –
Что означает «когда row_id обоих векторов A & B соответствует» означает? Означает ли это, что вектор B содержит любой элемент с тем же row_id, или это означает, что для конкретного индекса i A [i] имеет тот же row_id, что и B [i]? Или что-то другое? –
Это вопрос домашнего задания? –