작성
·
134
·
수정됨
0
안녕하세요 선생님. 수업 잘 보고 있습니다.
공부를 하다가 궁금한 점이 생겨서 질문드립니다.
강의록을 보니
string::npos는 size_t 타입의 최대값을 의미합니다. size_t 타입의 최대값은 OS에 따라 달라지며 64비트 운영체제라면 64비트 부호가 없는 최대정수, 32비트 운영체제라면 32비트 부호가 없는 최대 정수값을 가집니다. 필자의 컴퓨터는 64비트 운영체제이기 때문에 18446744073709551615라는 값을 가집니다.
라고 나와 있는데 예를 들어 split 함수에서 찾고 싶은 문자열이 최대 정수값의 위치에 존재하게 된다면 그때는 코드가 제가 원하는대로 작동하지 않는 문제가 생기는게 아닌가 궁금합니다. 이러한 문제가 발생하는지와 발생한다면 그 해결법이 궁금합니다!
인터넷에 있는 npos와 관련된 문서들을 쭉 읽어보았는데 제 궁금증을 해결해주는 문서가 없어서 질문드립니다. 감사합니다!
답변 1
0
안녕하세요 ㅎㅎ
18446744073709551615가 나올경우 해당 배열을 순회하는 시간복잡도는 1조가 넘어가게 됩니다.
즉, 이런 경우의 문제는 나오지 않기 때문에 신경쓰지 않으셔도 됩니다.
예를 들어 split 함수에서 찾고 싶은 문자열이 최대 정수값의 위치에 존재하게 된다면 그때는 코드가 제가 원하는대로 작동하지 않는 문제가 생기는게 아닌가 궁금합니다.
>> 만약 그정도의 시간복잡도가 해결이 된다면 그 때는 size_t를 이용해서 순회하면 됩니다
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.