哪个代码在 memory/time 复杂度中更有效

Which code is more efficient in memory/time complexity

据说当我们将数组传递给函数时,只会将该数组的副本传递给函数。如果我们在该函数内修改数组,那么原始数组也会受到影响。 那么与案例 2 相比,案例 1 会占用相同的内存还是会消耗更多的内存?

//Case 1:-
int sum(vector<int> v)
{
...
}
//Case 2:-
int sum(vector<int> &v)
{
...
}

您传递的是 std::vector,而不是数组。第一种情况将获取该向量的副本(将所有元素复制到 std::vector<int> 的新实例),而第二种情况将只获取对原始向量的引用。

很明显,第二种情况比第一种情况更有效(在性能和内存方面),因为不会进行复制,而且最终不会有两个向量。

但更好的(不是性能而是代码设计)是

int sum(const std::vector<int> &v)
{
...
}

因为您没有修改矢量。

PS: Why is "using namespace std;" considered bad practice