哪个代码在 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
据说当我们将数组传递给函数时,只会将该数组的副本传递给函数。如果我们在该函数内修改数组,那么原始数组也会受到影响。 那么与案例 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