c++中向量中的元素除法
Posted
技术标签:
【中文标题】c++中向量中的元素除法【英文标题】:Division of elements in vector in c++ 【发布时间】: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::divide1.0 / 10.0 / 5.0 / 2.0
,以你的例子为例。您是否尝试过 std::accumulate(v.begin() + 1, v.end(), *v.begin(), std::divides<double>()))
之类的方法(假设非空向量)?
【参考方案1】:
正如 @Algirdas Preidžius 在评论中提到的(我在答案弹出之前就开始写答案),您可能只是错过了算法应该从第一个数字开始而不是 除以它。这应该是您所期望的:
int main()
std::vector<double> vec = 10, 5, 2;
std::cout << std::accumulate(vec.cbegin() + 1, vec.cend(),
vec[0], std::divides<>());
注意+ 1
在vec.cbegin()
和vec[0]
之后作为起始值
【讨论】:
以上是关于c++中向量中的元素除法的主要内容,如果未能解决你的问题,请参考以下文章