【问题标题】:Which code is more efficient in memory/time complexity哪个代码在内存/时间复杂度上更有效
【发布时间】:2021-09-24 02:00:18
【问题描述】:

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

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

【问题讨论】:

  • 你忘记了一个变种:int sum(std::vector&lt;int&gt; const&amp; v)

标签: c++ vector stl c++17


【解决方案1】:

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

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

但更好(不是为了性能,而是为了代码设计)

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

因为你没有修改向量。

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

【讨论】:

    猜你喜欢
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多