크기N으로 받은 배열을 고대로 정렬해서 출력하는데 왜그럴까요..
좀만더 가르침을 주시면 감사하겠습니다.
1181번 - 단어 정렬
후.. 생각보다 어려운 문제였네요. 생각보다..
std::sort를 써 보세요. 왜 그런지는 제가 읽어볼 만한 링크와, 제 나름대로 이해한 것들을 추가로 찾아서 댓글을 달아드릴게요.
http://en.cppreference.com/w/c...
이 문서 보시는 걸 추천드립니다.
The type of the elements of the array must be a TrivialType, otherwise the behavior is undefined.
이게 굉장히 중요한데요. 원소들의 타입이 Trivial Type이 아니면, 동작이 Undefined된다는 겁니다.
아래 코드를 돌려보면 String이 TrivialType인지, 그렇지 않은지 알 수 있을 듯 싶네요.
Trivial Type에 대한 정의는 아래 링크를 참조하세요.
말 그대로 Undefined 되어서 그런 듯 싶네요.
정의되지 않은 것이니 환경이나, 혹은 특정한 입력 조건에 따라서 다르게 동작할 수도 있는 위험이 있는 것이지요.
예를 들자면, printf 함수로 "abc"를 출력한다고 했을 때
어떤 환경에서는 abc를 출력하고, 어떤 환경에서는 cba를 출력할 때. 라고 하면 쉽게 와 닿으실 듯 하네요.
저도 ideone에서 반례를 찾아보려고 노력했습니다만. 안 되더군요.
댓글을 작성하려면 로그인해야 합니다.
luegil 6년 전 1