Я ищу «динамический компаратор», который дает результат сравнения в зависимости от аргумента во время выполнения.Является «динамическим компаратором», доступным в C++
Здесь приведен компаратор, который сравнивает два целых числа в соответствии с их расстояниями до входного аргумента x.
struct leq
{
bool operator()(const int a, const int b, const int x) {
return abs(a-x) <= abs(b-x);
}
};
я надеюсь использовать его для осуществления следующей вставки в набор, содержащий целое число 2, то есть,
mySet = {2}
mySet.insert(3, leq(5)) results: mySet = {3, 2} // argument x of leq is 5 and abs(3-5) < abs(2-5)
mySet.insert(3, leq(1)) results: mySet = {2, 3} // argument x of leq is 1 and abs(3-1) > abs(2-1)
Note: the argument x may change for each element to be inserted into mySet.
Есть ли способ использовать только стандартный контейнер набор и функцию его членов для достижения этой цели?
Заранее благодарен!
Какова ваша фактическая проблема, когда вы пишете это? –
Является ли 'x' фиксированным значением для каждого экземпляра' std :: set'? Или вы хотите время от времени изменять значение 'x'? –
Слово, которое вы ищете, является «stateful». – Mehrdad