Поиск по нескольким полям класса

105
21 ноября 2021, 17:20

Подскажите, пожалуйста, статьи, примеры кода и т.п., где есть реализация или показано как правильно реализовывать поиск по нескольким параметрам, которые выбирает пользователь. У меня есть контейнер в котом хранятся объекты, которые содержат разные поля. Мне нужно находить объекты по полям (критериям), которые выберет пользователь.

Answer 1

Ну все просто. напиши пару функциональных объектов который займутся сравнением для поиска и все. Дальше отдайте все это в std::find_if а там пользователь выберет по чем искать (да хоть по 2 полям) и Вы подсунете нужный функциональный объект.

Вот банальный пример реализации.

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

class Obj
{
public:
    Obj(int i, std::string s, int i2) : i(i), s(s), i2(i2){}
    int i;
    std::string s;
    int i2;
};

int main() {
    std::vector<Obj> v{{1, "aa", 11}, {2, "bb", 12}, {3, "cc", 13}};
    auto int_cmp{[](Obj& o, int i, int i2) ->bool {return (o.i == i && o.i2 == i2 ) ? true : false;}};
    auto it1{std::find_if(std::begin(v), std::end(v), std::bind(int_cmp, std::placeholders::_1 , 3, 13))};
    if (it1 != std::end(v)) {
        std::cout << "catch!" << std::endl;
    }
    return 0;
}
READ ALSO
Параллельное программирование с++,openmp

Параллельное программирование с++,openmp

Задание было, написать программу и распараллелить ее, само задание звучит так : Циклическим сдвигом строки s называется строка sksk+1sk+2…s|s|s1s2…sk-1...

96
Как сделать скролл картинок по горизонтали?

Как сделать скролл картинок по горизонтали?

Как сделать, что бы картинки располагались как на примере

255
Как убрать hover?

Как убрать hover?

ссылка на codepen Как убрать hover эффекты с помощью скрипта на экранах меньше 992px?

247