关于 & 用法的一些事情让我感到困惑 它有
vector<int> nums
vector<int>& nums
vector<int> &nums
我不确定它们之间的区别。
class Solution {
public:
int maxArea(vector<int>& height) {
long i = 0;
int j = (height.size() - 1);
long water = 0;
while (i < j) {
water = max(water, ((j - i) * min(height[i], height[j])));
if (height[i] < height[j]) {
i += 1;
} else {
j -= 1;
}
}
return water;
}
};
上面的答案在LeetCode中无论有没有&都通过了,为什么我们需要关心&
最佳答案
vector<int> nums
//The below two are identical:
vector<int>& nums
vector<int> &nums
如果包含或排除 &
,则代码将起作用,但带有 &
的参数接受对函数的同一变量的引用,并防止从调用函数到被调用函数。这是为了提高性能并防止复制开销。引用几乎与指针的工作方式相同。
如果您将其用作变量而不是函数参数,则必须对其进行赋值,并且一旦赋值,就无法将引用更改为引用另一个变量。
这意味着如果您修改函数中的height
vector ,调用函数中的 vector 也会被修改。要防止修改,请使用:
int maxArea(const vector<int>& height)
关于C++ & 不同用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67617657/