작성
·
124
·
수정됨
0
안녕하세요 선생님 해당 코드는 정답코드입니다. 그러나 제가 주석처리한부분으로 코드를 짰을때는 segmentation error가 나와서 그 이유를 여쭤보고 싶습니다.
또한 선생님께서는 size()를 사용하셨고 저는 length()를 사용했는데 size()와 length()의 장단점도 알고싶습니다
http://boj.kr/df71a1d8b94a49cca8ed3d2cbb104d78
감사합니다
답변 1
0
안녕하세요 ㅎㅎ
// if(s1.length() == s2.length()){
// int i = 0;
// while(s1[i] == s2[i]){
// i++;
// }
// return s1[i] < s2[i];
// }
이렇게만 bool 함수를 작성하셨다면 s1와 s2의 길이가 다를 때는 어떻게 하는지가 명시가 되어있지 않아서 에러가 뜨는 것 같습니다. 모든 경우의 수를 고려한 bool 함수를 구축해야 합니다.
또한 선생님께서는 size()를 사용하셨고 저는 length()를 사용했는데 size()와 length()의 장단점도 알고싶습니다
>>
C++의 std::string
클래스에서 length()
와 size()
는 동일한 기능을 제공합니다. 저는 개인적으로 size()가 글자수가 적기 때문에 이를 애용하는 편입니다.
참고로 공통점은 다음과 같습니다.
length()
와 size()
는 모두 문자열의 길이(문자의 개수)를 반환합니다.
반환 값의 타입은 std::string::size_type
입니다.
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
안녕하세요 ㅎㅎ
int와 std::size_t를 비교할 때는 int는 size_t로 변환되서 비교가 됩니다. 이를 유형 변환( type conversion 또는 type promotion)이 일어났다라고 합니다.
참고로 size_t는 0부터 특정양수까지 표현되므로 음수와 size_t타입을 비교할 때는 주의해야 합니다.
size_t의 범위
32비트 시스템: size_t
는 4바이트(32비트), 0
에서 4,294,967,295
(2^32 - 1)까지
64비트 시스템: size_t
는 8바이트(64비트), 0
에서 18,446,744,073,709,551,615
(2^64 - 1)까지
감사합니다.
선생님 length()와 size()의 반환 타입이 int값이 아님에도 불구하고 int형과 비교연산자를 사용할 수 있는 이유는 뭔가요??
예시 코드입니다!
int I = 0;
vector<int> v;
if(I == v.length()) cout << "same!";