【问题标题】:Using std::bind使用 std::bind
【发布时间】:2018-04-08 00:05:36
【问题描述】:

我必须创建一个名为“GetNextProduct”的函数,它在<int, Product*> 的多重映射中返回“下一个”产品(其中“int”键是产品引用[编号],它是产品对象的一个​​属性)。我们需要在这个函数中使用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.:如果有错别字和其他东西,我尝试从法语手动翻译我的代码。

【问题讨论】:

  • 你应该“绑定”什么?你应该用绑定的等价物替换fonctEqual吗?也许向我们展示FunctorEqual 会有所帮助

标签: c++ iterator std bind


【解决方案1】:

要在多图中查找下一个元素,我将使用以下代码:

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 用于为函数创建包装器。我不知道在这个例子中可以绑定什么。

【讨论】:

    猜你喜欢
    • 2023-03-16
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    • 2014-12-17
    相关资源
    最近更新 更多