'What is the time complexity of passing a Vector of size n to another function by passing by value and passing by reference?
void fun(vector<int>vec)
{
some code
}
int main()
{
int n = 5;
vector<int>avec(n);
fun(avec);
}
What is the time complexity of passing a Vector of size n
to another function by passing by value and passing by reference?
What is the time complexity of this code passing a vector only one time?
Solution 1:[1]
Passing a std::vector
of size N
to a function by value obviously has a linear complexity O(n)
, since it involves copying N
objects. Passing by reference has complexity O(1)
, since in fact only the address of the std::vector
is passed to the function, regardless of its size.
It is worth noting that the situation is different with returning a std::vector
from a function, in this case, returning by value has a complexity of O(1)
, since in this case the compiler either uses copy elision
, if it is permitted, or the move constructor. Both has O(1)
compexity.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 |