c++ max()와 *max_element() 에 대해서

처음에 나는 1932번 문제에 대해서 

int ans=0;
for(int j=1; j<=n; j++){
	ans=max(ans,p[n][j]);
}
cout<<ans;

형태로 최대값을 찾아서 출력하였다. 

그리고 강의에 첨부되어있는 정답 코드에서는

cout << *max_element(d[n] + 1, d[n] + n + 1);

이렇게 한줄로 표현하였다. 

그래서 *max_element();에 대해서 지피티에 검색해보았다. 

 

 

내가 얻은 정보로 보았을때 내가 직접 max값을 지속적으로 최신화 시켜주면서 구하는 것과, *max_element()를 사용하여서 구하는 것이나 결국 내부 구동하는 방식은 같은 것으로 보여진다. 

하지만 익숙해진다면 *max_element(); 형태로 작성해서 간결하게 표현하도록 하자. 

이때 max_element()가 반환하는 값이 주소값이라는걸 명심하고, 값을 사용하기 위해 * 연산자를 붙여서 해당 주소에 있는 값을 가져온다는걸 기억하도록 하자. 

 

만약 max_element()에 * 연산자를 붙이지 않고 출력을 해보면, 

이런식으로 0039798C의 값을 출력한다. 

 

  Comments,     Trackbacks