thyung   4년 전

백준 질문에서 많은 도움을 얻고 있는 학생입니다.

memset 함수에 관해 질문이 있어서 질문 드립니다

아래 코드에서 28번째 줄을 25번째 줄에 memset(check, false, N);라고 쓸 경우 문제가 틀리더군요. 똑같은 의미인 것 같은데 안 되는 이유는 무엇인가요?( memset이 바이트 단위로 초기화 하는 함수라 0으로 초기화 할때는 자료형에 상관 없이 가능하다고 봤던 것 같아요)

그리고 찾아보니 c++에서 memset이 비표준이라고 하던데, 고수님들은 어떤 식으로 반복 사용하는 배열을 초기화하나요?

열심히 공부하겠습니다

djm03178   4년 전

해당 문장을 실행하면 check[0]부터 check[N-1]까지가 초기화됩니다. 하지만 이 문제에서는 정점 번호를 1부터 N까지 사용하므로 memset에도 N+1을 넘겨주어야 합니다.

그리고 memset이 비표준이라는 이야기는 처음 듣습니다. 레퍼런스에도 등재되어있고, 표준이 아니라는 글귀도 찾아볼 수 없네요. https://en.cppreference.com/w/...

rubix   4년 전

추가로 <algorithm>헤더의 fill 함수로 자료형과 상관없이 배열을 초기화 할 수 있습니다.

thyung   4년 전

djm03178님, rubix님 모두 감사합니다. 제가 잘못 찾았나 봅니다ㅠㅠ 감사합니다!

댓글을 작성하려면 로그인해야 합니다.