C ++向量幅度[关闭]

Posted

技术标签:

【中文标题】C ++向量幅度[关闭]【英文标题】:C++ Vector Magnitude [closed] 【发布时间】:2017-11-13 14:31:40 【问题描述】:

我的任务是在 C++ 中制作一个向量幅度函数,作为课堂项目数学库的一部分,但是我不确定如何去做,如果有人可以推荐一些页面来阅读或给我一些帮助那太好了

编辑:我的 C++ 知识不是很好,我正在寻找帮助我学习如何为向量执行函数的页面

【问题讨论】:

提示:毕达哥拉斯。哦,提供幅度平方函数也可能很好,因为std::sqrt 不是最快的函数,而且通常不需要它。 完全不清楚为了实现您的目标缺少哪些信息:C++ 知识?你没有定义大小。你是说欧几里得长度?你的向量数据结构是什么样子的? 如果是集体项目,您必须与其他成员就数据表示达成一致。 【参考方案1】:

一个快速的谷歌提出了

magnitudes

由于这是一个课堂项目,我将让您阅读链接,而不是在这里提供完整的详细信息。

您可能想了解如何使用向量,例如 here。

我个人更喜欢尽可能使用 C++ 标准算法。您可以使用 std::accumulate 快速有效地完成此类事情。

#include <iostream>
#include <vector>
#include <numeric>
#include <string>
#include <functional>

int main()

    std::vector<double> v1, 2, 3, 4, 5, 6, 7, 8, 9, 10;

    double ssq = std::accumulate(v.begin(), v.end(),
                                    0.0,
                                    /* add here */);

    std::cout << "ssq: " << ssq << '\n';

标记为/* add here */ 的行是您需要添加一个运算符的地方,该运算符采用当前运行的平方和以及要添加的下一个值,并返回新的运行平方和。

或者,你可以只写一个 for 循环

double ssq = 0.0;
std::vector<double> v1, 2, 3, 4, 5, 6, 7, 8, 9, 10;
for (auto e : v)

    // calculate sum of squares here

【讨论】:

【参考方案2】:

重温 GCSE 数学:

c² = a² + b²

double magnitude = sqrt((Vector.x*Vector.x) + (Vector.y*Vector.y));

【讨论】:

以上是关于C ++向量幅度[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

向量中的结构中的C ++结构[关闭]

c ++使用stl向量[关闭]

C ++通过索引删除指针向量中的值[关闭]

C ++回调数组[关闭]

在for循环C ++之外访问向量[关闭]

在c ++中使用向量对数字进行排序[关闭]