傳遞我對C++相當新,我有一個關於通過引用傳遞元素的問題。 我定義下面的結構通過價值或參考使用struct
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);
}
該算法是建立一組2D點的凸包空間。我希望能夠在P的元素上循環,以便能夠檢測這個點是否在凸包上(因此檢查P.at(i).isOnEnvelop) 不幸的是,在調用函數convex_hull。我應該通過引用來傳遞參數嗎?或者我應該創建P作爲Point *的矢量?
非常感謝您的幫助
文森特
所以,如果我理解正確,你希望修改'P'在這次調用後反映在'main'中'convex_hull(P);' ?如果是這種情況,那麼只是按照這個'convex_hull(矢量&P)'的引用傳遞。 –
是的:實際上在調用convex_hull(P)之後,我將循環P並在散點圖上繪製它們(如果點在H中,則使用不同的顏色,因此可以檢查P.at(i).isOnEnvelop) – Vincent