我对 C++ 相当陌生,我有一个关于通过引用传递元素的问题。我定义了以下结构
struct Point
{
bool isOnEnvelop;
double x, y;
};
以及以下功能
vector<Point> convex_hull(vector<Point> P)
{
int n = P.size(), k = 0;
vector<Point> H(2*n);
for (int i = 0; i < n; i++)
{
// IF SOMETHING ....
P[i].isOnEnvelop = true;
H[k] = P[i]
k++
}
H.resize(k-1);
return H;
}
主要如下
main()
{
vector<Point> P;
// FILL P with Point and set Point.isOnEnvelop = false
vector<Point> H = convex_hull(P);
}
该算法正在构建二维空间中一组点的凸包。我希望能够在循环 P 的元素时检测该点是否在凸包上(因此检查 P.at(i).isOnEnvelop)不幸的是,调用函数后点的状态没有改变凸壳。我应该通过引用传递参数吗?或者我应该创建 P 作为 Point* 的向量?
非常感谢你的帮助
文森特