2014-10-16 4 views
0

나는 set_symmetric_difference (C++) 함수를 사용하여 한 세트에만 나타나는 모든 객체를 찾고 있지만 둘 다 사용하려고하지는 않습니다.set_symmetric_difference [C++]에서 사용할 문자열 비교기를 작성하는 방법?

set<string> set1, set2; //assume filled with strings 
vector<string> output; 

set_symmetric_difference(set1.begin(), set1.end(), set2.begin(), set2.end(), back_inserter(output), comparator); 

영문자 순으로 문자열을 비교하는 비교기를 작성하는 방법이 약간 불확실한 것 같습니다. 여기 내 추측은 지금까지의 : 그들이 동일 말할 것 같은

bool comparator(string s1, string s2) 
{ 
    for(int i = 0; i < min(length1,length2); i++) 
    { 
     if(s1[i] < s2[i]) return true; 
     else if(s1[i] == s2[i]) continue; 
     else return false; 
    } 
} 

나는, 문자열 브래드와 브래들리를 들어, 위에서 작동하지 않을 것입니다 알고 있습니다. 사실, 계속 및 거짓의 모델링이 사전 순으로 문자열 비교자를 설정하는 올바른 방법인지 알고 싶습니다.

소문자와 비교하여 대문자가 "알파벳"순서를 버릴 수도 있기 때문에이 문자열에 to_lower()를 사용하여 쉽게 수정할 수 있다고 생각하지만 아스키 값을 비교하는 데에도 관심이 있습니다.

답변

1

아무 것도 사용하지 마십시오. 기본 비교는 사전 식 비교를 통해 overloaded for strings 인보다 작음 연산자를 사용합니다.