C++ 심폐소생기

Nitroblue 1·2026년 1월 5일

코딩 스킬들

목록 보기
15/15
  1. Loop문에서 &를 쓰는 이유
for (cosnt auto &e : endge) {
	if (dist[e.from] == INF) continue;
    if (dist[e.to] > dist[e.from] + e.w) {
    	dist[e.to] = dist[e.from] + e.w;
        update = true;
    }
}
...

Bellman-Ford 알고리즘 실제 적용 문제를 해결하기 위해 참조 코드들을 공부하던 중,
&가 붙어있는 걸 뒤늦게 알아봤다. 굳이 이게 없어도 문제는 해결되긴 하는데 어떤 역할일까 궁금해서 찾아봤다.

&가 없으면 매 반복문마다 새로운 객체를 생성한다. 이 문제 상황에서는 e가 읽는 용도로만 쓰이므로, &를 통해 edges[i]를 직접 가리키게 하면 기존의 복사 비용을 절감할 수 있다고 한다.


  1. 파이썬에서 코드를 짤 때는 함수 선언 및 정의를 main 이전에 전부 완료했지만, C++에서는 main 앞 단에 함수 선언, main 뒷 단에 함수 정의를 작성하는 템플릿을 따른다.
int round(double number);
// int round(double); 이렇게만 작성해도 가능.

int main() ...

int round(double number)
{
	return static_case<int> (floor(number + 0.5));
}

  1. 사전 정의(라이브러리) 함수와 사용자 정의 함수 호출 간의 유사점과 차이점
  • 라이브러리는 include 코드로 사용 가능하고, 사용자 정의 함수는 직접 선언 및 정의를 해주어야 한다.
  • 호출하는 방식은 동일하다.

  1. Procedure Abstraction Principle
  • 함수는 블랙박스처럼 사용할 수 있도록 정의. 오직 함수 선언과 리턴 값을 설명해주는 주석뿐이어야 한다.
  • 함수 선언 주석에서 함수 인자에 대해 요구되는 모든 조건을 프로그래머에게 말하고 함수 호출의 결과에 대해 기술해야 한다.
  • 함수 본체에서 사용하는 모든 변수를 함수 본체에서 선언해야 한다(형식 매개변수는 선언할 필요가 없는데 그 이유는 함수 헤딩에 매개변수가 나열되어 있기 때문이다).

0개의 댓글