gpt4 book ai didi

c++ - 为 std::multiply 和 std::plus 获取中性元素

转载 作者:太空狗 更新时间:2023-10-29 19:44:10 25 4
gpt4 key购买 nike

在实现其构造函数采用的模板类时:

  1. 函数 vector (函数类型为 std::function<bool(const T&)> )
  2. std::binary_function<bool,bool,bool>我将使用它来累积 vector 从 1) 到特定值的应用结果。

我希望能够使用 std::plus()std::multiplies()作为第二个模板参数,但问题是根据函数我需要一个相应的中性元素(用于 std accumulate init 值)。对于 AND ( std::multiplies ) 我需要 true (又名 1 ),对于 OR ( std::plus ) 我需要 false (又名 0 )。我知道我可以专门化模板并解决问题,但我想知道是否有办法为内置的 STL 函数获取中性元素。

最佳答案

如果您使用的是 gcc,则可以使用 __gnu_cxx::identity_element ,这正是您所要求的。

如果你不是,我不认为有一个通用的解决方案,就好像有,gcc 不会实现他们自己的 - 你可能只是重写他们的实现(这是正如您所料,实际上只是几个模板特化)。

编辑:源代码位于 this file 的第 78-98 行.

关于c++ - 为 std::multiply 和 std::plus 获取中性元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12930653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com