2014-10-16 51 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; 
    } 
} 

我意識到上面的是行不通的,對於字符串布拉德和布拉德利,因爲它會說,他們是等價的。 我只是想知道,這種對true,continue和false的建模是否是爲字母順序設置字符串比較器的正確方法。

我也關心比較ascii值,因爲大寫字母與小寫字母相比可以排除「字母順序」的順序,儘管我想這可以很容易地通過在字符串上使用to_lower()來修復。

回答