【发布时间】:2018-07-14 20:20:15
【问题描述】:
我在 c++ 中有向量,例如 std::vector<double> v = {10.0, 5.0, 2.0}。我想按顺序划分向量的所有元素,即 10/5.0 =2.0 然后 2.0/2.0 应该是 1。所以,最终的答案是向量的所有元素的划分。有什么方法可以有效地使用一些 STL 函数或算法。我不想使用for 循环。感谢您的帮助!
【问题讨论】:
-
我尝试像这样使用 std::divide
std::accumulate(v.begin(), v.end(), 1.0, std::divides ()) )。但我得到了错误的结果。 -
向量为空怎么办?
-
您在寻找std::partition 吗?
-
然后什么都不做。只是抛出一个错误
-
@DhruvinNaik 这样的调用相当于
1.0 / 10.0 / 5.0 / 2.0,以你的例子为例。您是否尝试过std::accumulate(v.begin() + 1, v.end(), *v.begin(), std::divides<double>()))之类的方法(假设非空向量)?