반복적으로 함수를 호출 시에 인자를 참조로 전달해야하는 이유가 있다.
1. 재귀문인 경우
예를들어 func(vector<int>v){};라는 함수가 있고, func(v)가 무수히 많이 실행된다고 생각해보자. 이때 한번 호출 할 때마다, 벡터의 복사본이 생성이 돼서 성능저하를 일으킬 수 있다. 이 때 참조로 전달하면 이 문제를 해결할 수 있다.
다음과같이
func(vector<int> &v)
로하면 해결이 된다.
2. 반복문에서 auto가 쓰일때
for(auto iter : v)
{
//..
}
for(auto &iter : v)
{
//..
}
전자는 반복문이 한번 실행 될 때마다 v[i]가 생성되어 메모리를 많이 차지하고 따라서 성능 저하가 일어난다.
후자는 반복문이 실행되더라도 v[i]를 생성하는게 아닌 참조해버리기 때문에 성능 저하가 일어나지 않는다.
'Algorithm Concepts and C++ Syntax' 카테고리의 다른 글
C++ 반복자와 포인터의 개념 + 둘의 메모리에 대한 이해 (3) | 2024.10.05 |
---|---|
트리의 개념 (0) | 2024.10.04 |
C++알고리즘 - 이분탐색 개념 및 사용법 (0) | 2024.10.01 |
C++ 소수 찾기 알고리즘 2가지 (0) | 2024.09.29 |
C++ - (최대공약수,최소공배수 구하기) 유클리드 호제법 알고리즘 (0) | 2024.09.28 |