안녕하세요. chogahui05입니다. ps를 하시다 보면, 테스트 케이스 문제를 많이 보셨을 겁니다. 보통, vector를 클리어 할 때, clear 메소드를 많이 이용하고요. 여기서 한 가지 질문. clear 메소드는 정말 vector가 할당했던 모든 것을 깔끔하게 clear 할까요? 답은 그렇다는 보장이 없다입니다. 링크에서, reallocation is not granteed 라는 문구를 보시면 알 수 있습니다. 다음 코드를 보도록 하겠습니다. v에 5개의 원소를 넣습니다. 그리고 size와 capacity를 출력합니다. 다음에 vector의 clear 메서드를 호출한 다음에 다시, size와 용량을 출력해 주는 capacity를 출력합니다. 결과 값을 보면, 1번째 줄에는 5와 8이, 2번째 줄..
레퍼런스 검색 결과
이번 시간에는 Objects 클래스에 있는 deepequals 메서드가 어떻게 동작하는지 알아보도록 하겠습니다. 사실, 카톡에서 누군가 질문을 올려주셔서 뜯어보게 되었습니다. 먼저, Objects의 deepEquals를 보면, a와 b를 받습니다. 80번째 줄을 보면, a와 b가 같으면 true를 리턴합니다. 가리키는 객체가 같다면 true를 리턴합니다. 그리고, a가 null이거나 b가 null이면 false를 리턴합니다. 그렇지 않으면, Arrays.deepEquals0을 호출합니다. 그러면 이 함수를 보도록 하겠습니다. 뭔가 너무 길어 보입니다. 조건 구문만 대략 10개가 넘는 듯 싶어요. 이 중 8개는 기본 타임의 배열인 경우에 처리를 하는 루틴입니다. 예를 들어, instance of char[..
fflush(stdin) 정도는 책을 보시면서 한 두번쯤은 보셨을 거에요. 가끔, 왜 이 함수를 썼는데 동작을 하지 않느냐. 는 질문도 더러 받아본 적이 있습니다. 원형은 다음과 같습니다. 하도 많이 언급이 되다 보니, 그냥 안 보고도 이 함수를 쓰시는 분들이 적지 않게 계실 듯 싶기도 합니다. 코드포스 interactive 문제를 많이 보셨다면, fflush 정도는 많이 써 보셨으리라 생각이 드니, 사용법은 생략해도 무난할 듯 싶습니다. 그런데, 링크에서 보면, 이런 문구가 있습니다. 인풋 스트림에 대해서는, 동작이 정의되지 않는다고 설명이 되어 있습니다. 이것 하나만으로 답변이 끝났네요. stdin은 표준 입출력을 의미합니다. 이것 또한 input과 관련된 것입니다. 따라서, 동작이 정의되지 않고, ..
예전에 vector가 인자로 들어왔을 때, 어떻게 해야 되는지를 올렸습니다. 어느 분이 댓글로 피드백을 주셨습니다. 그 내용에 관해서 보강 설명을 하도록 하겠습니다. 사실 동적 배열에서 중요한 것은 딱 3개입니다. capacity, size. 그리고 grow rate. ps를 하시다 보면, vector의 reserve와 resize 함수를 써야 하는 경우가 있습니다. 어떤 경우인지는 밑에서 설명해 드리도록 하겠습니다. 동적 배열의 기본 동작 먼저 설명해 드리겠습니다. 먼저, 4개의 원소를 저장할 수 있는 공간에 3개의 원소가 있다고 해 봅시다. 이 경우에, capacity는 4이고, size는 3입니다. 이걸 그림으로 나타내면 아래와 같습니다. 여기서, push_back(3)이 호출되면 어떤가요? 이 때..
문자열 다룰 때, strcpy 함수를 많이 쓰곤 했습니다. 그런데, stpcpy 정도는 알아두어도 크게 손해볼 거 같지는 않았습니다. 백준의 몇몇 문자열 관련 문제들을 풀어보면서 뼈저리게 느끼기도 했고요. man 페이지를 읽어보면 공부할 만한 키워드들이 상당히 많이 나오는데요. 그것들에 대한 자세한 내용들은 하나 하나 시스템에 대해 공부하면서 파 보기로 합시다. 먼저, stpcpy는 strcpy와 하는 일이 매우 유사해 보입니다. src가 가리키는 문자열의 내용을 dest에 복사한다는 것도 같아 보이고요. 그런데, 오늘 배울 함수는 리턴 값이 its end라고 합니다. 이게 무슨 이야기인지 잘 모르겠군요. 코드를 하나 작성해 봅시다. 예제 프로그램은 위와 같습니다. 실행 결과는 어떻게 나왔을까요? 이렇게..
최근댓글