小编Ap3*_*p31的帖子

使用`std :: min`作为算法参数

所以我遇到了这个问题:我需要用std::vector<int>它之前的最小值(包括在内)替换每个元素.

自然std::partial_sum想到的-如果我能通过std::minBinaryOp,它会做的工作.

事实证明我不能这样做,因为它std::min<int>是一个重载函数 - 它适用于两者int,initializer_list<int>并且partial_sum模板不能用未知类型实例化.

通常这是通过一个模板类解决operator(),像std::plus<void>等,但标准库似乎并不有一个minmax.

我觉得我要么必须实现自己的T min<T>(T,T),这将是一个完全克隆,std::min除了没有initializer_list超载,或实现我自己的class min类似std::plus.两者都觉得有点不对,因为人们会期望标准库有这样一个基本的东西,而且基本的东西通常很难实现:)

所以这是我的问题:

  1. 有没有正确的方法来解决问题?即不引入新的模糊结构/编写超过几行代码.
  2. 在引入initializer_list过载之后,假设这成为C++ 11中的问题是否正确min?那么C++ 11打破了依赖于显式实例化的代码std::min

谢谢!

c++ templates stl overloading c++11

23
推荐指数
2
解决办法
1733
查看次数

标签 统计

c++ ×1

c++11 ×1

overloading ×1

stl ×1

templates ×1