Использование std::bind

avatar
ShomaliParty
8 апреля 2018 в 00:05
109
1
0

Мне нужно создать функцию под названием "GetNextProduct", которая возвращает "следующий" продукт в мультикарте <int, Product*> (где ключ 'int' — это ссылка на продукт [номер], которая является атрибутом объекта Product ). Мы должны использовать std::bind в этой функции (внутри "find_if").

Вот что я сделал:

Product* ProductManager::getNextProduct(Product* product) const
{

Product* productTemp;

ProductTemp->setReference(product->getReference+1);

FunctorEqual<Product> fonctEqual(productTemp);

auto it = container_.end();
while (it == container_.end())
{
    it = find_if(container_.begin(), container_.end(), fonctEqual);
    productTemp->setReference(productTemp->getReference++);
}

return it->second;
}

Я думаю, что это должно работать, но я не вижу, где использовать привязку.

P.S.: если есть опечатки и прочее, я пытался вручную перевести код с французского.

Источник
kmdreko
8 апреля 2018 в 00:31
0

что вы должны "привязать"? вы должны заменить fonctEqual связанным эквивалентом? возможно показывая нам FunctorEqual поможет

Ответы (1)

avatar
atrelinski
8 апреля 2018 в 00:27
0

Чтобы найти следующий элемент в мультикарте, я бы использовал следующий код:

Product* ProductManager::getNextProduct(Product* product) const
{
    auto it = container_.find(product->number);
    if (it == container_.end())
        return nullptr; //element not found
    ++it;
    if (it == container_.end())
        return nullptr; //it was the last element in collection. No next element
    return it->second;
}

Bind используется для создания оболочки для функций. Я не знаю, что может быть связано в этом примере.