Есть (пока на бумаге) набор данных вида пара([объект],[набор объектов])=>[третий объект]. Типы объектов, в общем случае, разные. В данном конкретном -- строка + набор строк => функтор. Первые объекты встречаются в наборе данных не более одного раза.
Требуется эффективно с точки зрения производительности и памяти реализовать на C++ алгоритм, на вход которого подавался бы один первый объект и один второй, а на выходе получался бы соответствующий им третий объект при условии его наличия. Нужный третий объект находится так: первый объект пары должен совпадать с заданным первым и в наборе вторых должен присутствовать второй.
Даже и как организовать данные через стандартные контейнеры пока в голову не приходит...